Dev DiaryProject Updates

Wetonomy Dev Diary – refining the foundations for our first mobile app

In the spirit of transparency, from now on, we’re going to share an update every other week. What have we been doing, what conundrums gave us headaches, what are we planning to do – expect all of this into our Wetonomy biweekly post.

What did we do?

Over the last two weeks, we worked on refining our foundations, StrongForce and Wetonomy’s base mobile application.

While doing this we stumbled on two main issues, one being the inability to disable non-public reflection in .NET Core as of 2.1, the other being the slowness of Flutter webviews, compared to native webviews.

Due to this, we had to massively rework StrongForce to use serialization based on abstract classes and interfaces, instead of reflection, so that we would be able to fully disable reflection at some point in the future. Likewise, we had to change the web view plugin we use with Flutter to another one, which works faster, at the expense of some features.

What are we changing (merged and in-progress)?

StrongForce:

  • Updated Cosmos to 0.36.0. When the Cosmos integration was originally written, it targeted an exact commit since there was no Cosmos version with modules released yet.
    • Integrated with events, so that frontend code can know exactly which contracts were changed by a transaction.
  • Added Kits, which are our way to initialize the blockchain.
  • Allowed contracts to create other contracts, needed for the implementation of those kits.
  • Refactored ACLs and serialization a bit, making them easier to use and less complicated.
  • Removed all uses of Reflection and JSON.Net, as they can allow a single bad contract to bypass ACL or directly modify other contracts.
    • In the process, completely changed the concept of actions — now they are managed by the ContractRegistry, instead of being immutable objects created by contracts.
  • Hardened the relationship between contracts and the contract registry. Now, just having a reference to a contract is not enough to arbitrary modify its state; likewise with having just a reference to the registry.

Wetonomy (backend):

  • Updated TokenSystem to newest StrongForce. Note that the StrongForce update is not yet merged, so checking out the changes is a bit more difficult.
    • Added TokenExchanger which exchanges tokens from one TokenManager to another at a specified rate.
  • Reworked Achievements kit to use updated TokenSystem and StrongForce.

Wetonomy Mobile App:

  • Change Google’s web view widget for a community-developed one. Instead of rendering the web view to a texture and then to screen, this uses a native web view on top of the Flutter canvas.
    • Since bi-directional channels were not supported in the new widget, we worked with the community to implement them.
  • Created a nonfunctional prototype of the achievements terminal.
  • Integrated with the Tendermint node running with Cosmos and StrongForce. Integration is not yet complete, but we got the general idea of how it can be done.

What next?

Currently, we are working on a demo of the mobile app, Tendermint node, Cosmos integration, StrongForce node, and Wetonomy achievements working together. Expect this to be wrapped up in a week or so.

Join our Discord community to stay in the loop for updates and follow us on Twitter for more interesting tidbits and some semi-serious discussions!

Leave a Reply

Your email address will not be published.