At the moment the most challenging part is making the interactions between the two chains (ETH and VEGA) secure and non-gameable. It’s difficult to get a command from one chain to another without an authority, so we are using a combination of CQRS (Command Query Responsibility Segregation) and TSS (Threshold Signature Scheme) to ensure that that gap between the chains is covered. TSS is a complicated old-school crypto mechanism that has very few examples of solid implementations that fit our needs. This research is ongoing.
In general, the most challenging part of Solidity is the odd caveats of the language and knowing that every operation costs real money to run. It’s much closer to firmware programming than the full-stack web that I came from.