sequenceDiagram
autonumber
participant StakeClient as Sample stake<br> client application
participant StakeAPI as Stake Intent API
participant Blockchain as Blockchain RPC API
box Builder Vault
participant TSM1 as MPC Wallet <br>(private key share 1)
participant TSM2 as MPC Wallet <br>(private key share 2)
end
StakeClient ->> StakeAPI: get StakeIntent unsigned tx data <br>(amount, withdrawal & recipient address)
StakeClient ->> Blockchain: get blockchain inputs (gas, nonce) for new tx<br>(sender wallet)
StakeClient ->> StakeClient: construct unsigned tx
StakeClient ->> TSM1: request signature (unsigned tx)
TSM1 -->> StakeClient: return partial signature
StakeClient ->> TSM2: request signature (unsigned tx)
TSM2 -->> StakeClient: return partial signature
StakeClient ->> StakeClient: combine partial signatures
StakeClient ->> Blockchain: broadcast signed tx<br>(signed tx, deposit contract)
- Node.js or launch in code-spaces
- Register for a demo Builder Vault tenant: https://www.blockdaemon.com/get-started/builder-vault-sandbox-registration
- Download SDK bundle provided in registration email (extract authentication certificates)
- Place Builder Vault authentication certificate key-pair
client.crt
&client.key
in this nodejs folder
- Register for free Blockdaemon RPC API key and set in .env as BLOCKDAEMON_API_KEY
- Register for free Blockdaemon Staking API key and set in .env as BLOCKDAEMON_STAKE_API_KEY
cd ethereum-staking/buildervault/nodejs/
cp .env.example .env
- update .env with API keys
- set the public NPM repository for the BuilderVault Node.js SDK
npm config set @sepior:registry=https://gitlab.com/api/v4/projects/56306653/packages/npm/
npm install
npm run start ethereum-stake-bv.ts
- note, on first run this step will fail as the wallet address has no funds
- copy the new Ethereum wallet address and fund the account
Step 5. Launch ethereum-stake-bv.ts to generate the Stake Intent request, sign the request with BuilderVault and broadcast the transaction
npm run start ethereum-stake-bv.ts
- (optional) decode the raw signed transaction to inspect the Blockdaemon provided attributes (https://rawtxdecode.in)
- observe the confirmed transaction through the generated blockexplorer link