The StakeWise smart contracts for provisioning Ethereum 2.0 Validators.
- Extensible: It is possible to create your own contract with logic for accumulating validator deposit amount.
- Upgradable: By using OpenZeppelin SDK, it's possible to fix bugs and critical issues when the contracts are deployed to the production network.
- Role-based access: By having Operators, Admins, and Managers contracts, it is possible to restrict user capabilities.
- Integration friendly: Any contract state change is always followed by an emitted event. Applications can monitor and act on these events.
- Configurable: Any global setting can be managed through the separate Settings contract.
-
Install dependencies:
yarn install --prod
-
Compile contracts:
yarn run compile
-
Define network parameters in
truffle-config.js
. For example:module.exports = { networks: { ropsten: { provider: function () { return new HDWalletProvider( mnemonic, 'https://ropsten.infura.io/v3/YOUR-PROJECT-ID' ); }, network_id: '3', }, }, };
-
If you are deploying to the network without
VRC
, run the following commands:yarn install truffle exec scripts/deployVRC.js --network ropsten
-
Deploy contracts to the selected network:
NETWORK=ropsten INITIAL_ADMIN=<address> VRC=<address> yarn deploy
where
NETWORK
is the name of the network fromtruffle-config.js
,INITIAL_ADMIN
is the first account capable of calling functions restricted only to admins (see Admins contract),VRC
is the address of Ethereum 2.0 Deposit Contract.The network file will be created at
.openzeppelin
directory.
You can find the documentation for every contract in the contracts
directory. In the future, the documentation will be hosted on a dedicated webpage.
Development of the project happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements.
The project is GNU GPL v3.