Introducing Gnosis Safe, Manage DAO Assets Through Multi Signature Wallet Contracts On BSC

Spore Engineering
6 min readJun 15, 2021

--

Hello everyone, Carlos here in another protocol update, I’m very exited to share with all of you our own custom implementation of Gnosis Safe multi-sig wallet contracts, which will help to improve the security layer of the contracts that holds our assets, and also enables our members to manage them accordingly, approving or refusing expends/transfers, and more.

Custom rules can also be applied, and in the short run this will be integrated with our Snapshot voting & Governance platform, all this to settle the foundations of the Orbital Station project.

All this runs on Binance Smart Chain Network.

REF: https://safe.spore.engineering/

Our First Safe: Burner Wallet

We decided to start by creating our first protocol safe to store the SPORE BEP20 tokens that we will burn in the future (Burner Wallet), to celebrate periodically burning events among our community.

REF: https://safe.spore.engineering/#/safes/0x79207f009733a9770edE24f7Fd7b8e02b2A25222/balances

All safes can have unlimited amounts of tokens, and also custom tokens can be added too.

REF: https://safe.spore.engineering/#/safes/0x79207f009733a9770edE24f7Fd7b8e02b2A25222/balances

The transaction list of each safe is much more user friendly too, giving a better overview of the recent safe movements.

REF: https://safe.spore.engineering/#/safes/0x79207f009733a9770edE24f7Fd7b8e02b2A25222/transactions

The safe also comes with a very user friendly UI, for example, at the moment you press the button to receive funds in an specific safe, you will be prompted with all the respective safe data, like QR, address, and all the necessary information for easily interaction.

REF: https://safe.spore.engineering/#/safes/0x79207f009733a9770edE24f7Fd7b8e02b2A25222/balances

Finally, all safes comes with an specific setting page to manage them accordingly, in which you can set owners and policies among others details.

Owners are the list of members that manages the safe, meanwhile policies are the set of rules needed to be fulfilled in order to validate or approve the assets inside the respective safe.

REF: https://safe.spore.engineering/#/safes/0x79207f009733a9770edE24f7Fd7b8e02b2A25222/settings

Securing & Managing Assets

Until now, the way to store assets was directly on contracts, resulting in a possible risky method to store and manage them, that’s why the incorporation of the safes are so important, because they not just add a new layer of security, but allow specific group of members to manage them.

For the next example, we will take our NFT Store contract, which is in charge to sell NFTs in return for different stablecoins, storing all the assets directly on the contract, needing a manual process from the admin to retrieve them.

This will change from now on, we will have specific safes for all of our products, with well defined groups of members and policies to spend the required assets, automating the processes from the purchase to the final manager group in charge of giving those funds an usage.

REF: https://bscscan.com/address/0x2765041E22Cf49438dA4bfe751252f9fEa1F1Be3

Preparing The Foundations Of Our DAO

We recently enabled the possibility to purchase NFTs on our store utilizing the BEP20 SPORE Token, those tokens will be burner entirely, and they will be stored and locked on the burner wallet previously described.

For now, and ONLY IF YOU’RE REALLY INTRESTED IN PARTICIPATING ON THE PROJECT, you can acquire the DAO Member Card for 50 SPORE, it will be required soon to interact on everything related to the protocol, acting like an ID, and as the pool access cards, it’s a non transferable token.

REF: https://nft.spore.engineering/?section=dao

Technical Stuff Ahead

From now on a more technical mumble jumble will come into play, I’ll explain what version of Gnosis we used, how we implemented it, and everything related to the technical stuff, all this to contribute my grain in educating and passing the knowledge to others.

What Version Of Gnosis Safe Do We Use, And Why?

We currently used the version 2.19.2 which is basically the previous major release before v3.0.0, we decided to use this because from +v3.0.0 the Gnosis implementation needs an additional external API to work with the UI, which I personally doesn’t wanted to implement because it will means more points of failure, and at this stage of the project being alone will result in much work to keep and maintain the operation running smoothly.

Gnosis +v3.0.0 relies on the Safe Client Gateway API to process off-chain requests, improving significantly the user experience for the UI.

Is It Safe To Use Older Versions?

One of the main concerns using old versions of software always will be if it is safe or not (despites if I want or not to use the Safe Client Gateway API), because everyday new exploits and hacks are made by the community, so if it was risky in any way, I would be used the latest version and no the one we finally used .

To make sure that the version we used was secure, I recurred to the official Gnosis Discord Channel and ask about it, they stated that it was secured, but user experience will hurt.

What Contracts Do We Use?

At first, we used the official safe contracts repository to deploy our own set of contracts inside BSC network, but then we realized that Binance already has theirs own set of contracts deployed, so why use our custom ones when Binance has these already available and battle tested, security is always the aim, so we used Binance proposed contracts.

REF: https://docs.binance.org/smart-chain/developer/gnosis.html

What Changes Do We Performed On The UI?

Luckily for us, Binance also has their own Gnosis v2 implementation repository, so we basically replicated all the changes they performed on its repository to replace destination contracts and that's it for the UI.

REF: https://github.com/gnosis/safe-react/compare/development...binance-chain:development

Official Links

Disclaimers & Credits

--

--