# Casper Hackathon ## Task 1: Create and deploy a simple, smart contract with cargo casper and cargo test Casper Node Deployment ![](https://i.imgur.com/WgmGray.png) Contract Deployment ![](https://i.imgur.com/ZHvxjWY.png) Check Deployment Status ![](https://i.imgur.com/bKcdkVB.png) ``` { "id": -6102138056324616095, "jsonrpc": "2.0", "result": { "api_version": "1.3.2", "deploy_hash": "c74962134b00deb9826f5649a3600c36651618d384ec769bebb0abcc7f378d7a" } } (env) root@casper-janeisabelmw:~# casper-client get-deploy --node-address http://161.97.77.69:7777 c74962134b00deb9826f5649a3600c36651618d384ec769bebb0abcc7f378d7a { "id": 4949457737980343642, "jsonrpc": "2.0", "result": { "api_version": "1.3.2", "deploy": { "approvals": [ { "signature": "[130 hex chars]", "signer": "01a0d100bdc7d058e915b8d100aa3b0180935ef3c3fe320d8ccf27f45bc50c0aed" } ], "hash": "c74962134b00deb9826f5649a3600c36651618d384ec769bebb0abcc7f378d7a", "header": { "account": "01a0d100bdc7d058e915b8d100aa3b0180935ef3c3fe320d8ccf27f45bc50c0aed", "body_hash": "47de396bf9d2171ffda855bae540dfc7070dca083f835caf1859bb99e687635f", "chain_name": "casper-test", "dependencies": [], "gas_price": 1, "timestamp": "2021-09-20T19:43:17.321Z", "ttl": "30m" }, "payment": { "ModuleBytes": { "args": [ [ "amount", { "bytes": "03809698", "cl_type": "U512", "parsed": "10000000" } ] ], "module_bytes": "" } }, "session": { "ModuleBytes": { "args": [], "module_bytes": "[51990 hex chars]" } } }, "execution_results": [] } } ``` ## Task 2: Complete one of the existing tutorials for writing smart contracts > Multi-Signature Tutorial Check Faucet Account ![](https://i.imgur.com/7eGNAXn.png) > Exploring the Client Code ![](https://i.imgur.com/CVxkzCo.png) ``` > keys-manager@1.0.0 start:atomic > node -r dotenv/config ./src/scenario-atomic.js 0.1 Fund main account. Signed by: account-hash-19d38788088de2aeb904008e0f893b951ba3295194d909dbfa609e14f928d70c Deploy hash: fb5bcd7727deb317056414647fdc4c6faf129162a90070f94d77864784d518de Deploy result: { deploy: { hash: 'fb5bcd7727deb317056414647fdc4c6faf129162a90070f94d77864784d518de', header: { account: '011355f2fd72f835496b79c9db8ffc94fb04017182518f276051aaede89b372572', timestamp: '2021-09-20T19:50:07.544Z', ttl: '30m', gas_price: 1, body_hash: 'c4571803c46226223d5a284ded90a6ce29b7d597f2102d8f508bf5e159360db1', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { Transfer: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 1 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } [x]0.2 Install Keys Manager contract Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: 0297d6bce282fe12c18f71c9ecfba7043d3d8b7288fb939e2eb251061c3cde1c Deploy result: { deploy: { hash: '0297d6bce282fe12c18f71c9ecfba7043d3d8b7288fb939e2eb251061c3cde1c', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:51:12.126Z', ttl: '30m', gas_price: 1, body_hash: '8b75c87f0c5c33503df86050553e6a490fdee8d5154d9eececdc7c22618217c8', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { ModuleBytes: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 1 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } 1. Set faucet's weight to 3 Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: 1e03cea03e5bdc66390dcf9bd77c50659360916dbb761d4889154ab24352dfb7 Deploy result: { deploy: { hash: '1e03cea03e5bdc66390dcf9bd77c50659360916dbb761d4889154ab24352dfb7', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:52:18.189Z', ttl: '30m', gas_price: 1, body_hash: 'eb54606652a8ecab8b66805de49da009a29f0e74cd0c91b70f2365040e986388', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } 2. Set Keys Management Threshold to 3 Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: b9de1beaa18bb66c86c8e76f561d7cb87a1aadb7005208060d40ef9ccf5bbb72 Deploy result: { deploy: { hash: 'b9de1beaa18bb66c86c8e76f561d7cb87a1aadb7005208060d40ef9ccf5bbb72', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:53:23.694Z', ttl: '30m', gas_price: 1, body_hash: '3f3394304ff22fe422511e62eed631bc501385f67fdd1fe71891f7d375550324', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 1, keyManagement: 3 } } 3. Set Deploy Threshold to 2. Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: 8fbb45943055ded0704b4ef2922c3ab277aade1141975ae8b07f4c07ffbd8e93 Deploy result: { deploy: { hash: '8fbb45943055ded0704b4ef2922c3ab277aade1141975ae8b07f4c07ffbd8e93', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:54:29.106Z', ttl: '30m', gas_price: 1, body_hash: '609e820d1eb41cd0fe90e6c5c4cf179afd2c9d9ba19bb0f21ca310a85450f228', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 2, keyManagement: 3 } } 4. Add first new key with weight 1. Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: 2136cda4f58775aadb91f2bd6ca4ff97c1cf0ba30ba6e47af6419697d1e4ceab Deploy result: { deploy: { hash: '2136cda4f58775aadb91f2bd6ca4ff97c1cf0ba30ba6e47af6419697d1e4ceab', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:55:34.438Z', ttl: '30m', gas_price: 1, body_hash: 'e805d15be9bac0a95ff09442cfed392681f0add3172cf46efc088e6e32d454c2', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-d4e8cea764446723e272b27f8462216bc9943d35e7b42c73f3ee394ce6b4ee7a', weight: 1 }, { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 2, keyManagement: 3 } } 5. Add second new key with weight 1. Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: 55855bc739c4769ae79a8c883731e31a1d838812723f67443b93db2fa356f83e Deploy result: { deploy: { hash: '55855bc739c4769ae79a8c883731e31a1d838812723f67443b93db2fa356f83e', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:56:40.613Z', ttl: '30m', gas_price: 1, body_hash: '0770cb22f7a4a6890c41d6ef327655885c8bbd57de56733fef28a925db9faac4', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-1c8a8dd6bd40d02f700cca9bf4b8da6fcc8b592784a24dbd3cb6d5fd0e3671f8', weight: 1 }, { accountHash: 'account-hash-d4e8cea764446723e272b27f8462216bc9943d35e7b42c73f3ee394ce6b4ee7a', weight: 1 }, { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 2, keyManagement: 3 } } 6. Make a transfer from faucet using the new accounts. Signed by: account-hash-d4e8cea764446723e272b27f8462216bc9943d35e7b42c73f3ee394ce6b4ee7a Signed by: account-hash-1c8a8dd6bd40d02f700cca9bf4b8da6fcc8b592784a24dbd3cb6d5fd0e3671f8 Deploy hash: b896d7087b8d651149575f003945a26494c6c316b6088517b57a923bc4778112 Deploy result: { deploy: { hash: 'b896d7087b8d651149575f003945a26494c6c316b6088517b57a923bc4778112', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:57:45.859Z', ttl: '30m', gas_price: 1, body_hash: '4010a79508438a8ccc1bc529d26beef0974df2d6e50d58ecfeb0fa9629d1a174', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { Transfer: [Object] }, approvals: [ [Object], [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-1c8a8dd6bd40d02f700cca9bf4b8da6fcc8b592784a24dbd3cb6d5fd0e3671f8', weight: 1 }, { accountHash: 'account-hash-d4e8cea764446723e272b27f8462216bc9943d35e7b42c73f3ee394ce6b4ee7a', weight: 1 }, { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 2, keyManagement: 3 } } 7. Remove the first account Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: 7ae726f03d939bfd05b7c92971f49ea1ba6226c8d4ff8b84419459f831daae82 Deploy result: { deploy: { hash: '7ae726f03d939bfd05b7c92971f49ea1ba6226c8d4ff8b84419459f831daae82', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:58:51.153Z', ttl: '30m', gas_price: 1, body_hash: 'd1ce76ce01d60bff282545d70a03ba60277fef6ea05d7f36b94a9c7f65bb3f32', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-1c8a8dd6bd40d02f700cca9bf4b8da6fcc8b592784a24dbd3cb6d5fd0e3671f8', weight: 1 }, { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 2, keyManagement: 3 } } 8. Remove the second account Signed by: account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44 Deploy hash: 7c9c11b133d9acd6bea8d4980f685fde9815b29a014e3573d4cb2be347815131 Deploy result: { deploy: { hash: '7c9c11b133d9acd6bea8d4980f685fde9815b29a014e3573d4cb2be347815131', header: { account: '020299f95ee8fb2be132eb6498839cba8226622bf1c4c462d4dd56f3a49727976337', timestamp: '2021-09-20T19:59:56.340Z', ttl: '30m', gas_price: 1, body_hash: '646e2b2df138f0dd24e53466693671f8c121ea33263bafdc395816c80b4e3bb5', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', namedKeys: [ { name: 'keys_manager', key: 'hash-4c7d5e4c670c9a25b203b2d0c626c0ee855f2f296bd7b3bcfd83517a8898e44c' }, { name: 'keys_manager_hash', key: 'uref-707b31c14fb7118daf5e8b478f725be22bd5ca7885dd7273a361d12c0687a3f8-007' } ], mainPurse: 'uref-b9444401f4285869e3e31f784c80dbb6985020d2d4d195b617e36c7b46c9a8aa-007', associatedKeys: [ { accountHash: 'account-hash-de75b97e1cd42b1a3b4ee7ee6795840f2f3b57eefc6d92e7fe3e9a0855234a44', weight: 3 } ], actionThresholds: { deployment: 2, keyManagement: 3 } } ``` ## Task 3: Demonstrate key management concepts by modifying the client in the Multi-Sig tutorial to address one of the additional scenarios **Scenario 3: signing transactions with multiple keys** Create Scenario 3 Script for running the Key Management concepts ``` const keyManager = require('./key-manager'); const TRANSFER_AMOUNT = process.env.TRANSFER_AMOUNT || 500000000000; (async function () { let deploy; let masterKey = keyManager.randomMasterKey(); let mainAccount = masterKey.deriveIndex(1); let firstAccount = masterKey.deriveIndex(2); let secondAccount = masterKey.deriveIndex(3); console.log("\n0.1 Fund main account.\n"); await keyManager.fundAccount(mainAccount); await keyManager.printAccount(mainAccount); console.log("\n[x]0.2 Install Keys Manager contract"); deploy = keyManager.keys.buildContractInstallDeploy(mainAccount); await keyManager.sendDeploy(deploy, [mainAccount]); await keyManager.printAccount(mainAccount); // 1. Add additional key with weight 1 . console.log("\n1. Add additional key with weight 1.\n"); deploy = keyManager.keys.setKeyWeightDeploy(mainAccount, firstAccount, 1); await keyManager.sendDeploy(deploy, [mainAccount]); await keyManager.printAccount(mainAccount); // 2. Set Keys Management Threshold to 2. console.log("\n2. Set Keys Management Threshold to 2\n"); deploy = keyManager.keys.setKeyManagementThresholdDeploy(mainAccount, 2); await keyManager.sendDeploy(deploy, [mainAccount]); await keyManager.printAccount(mainAccount); // 3. Make a transfer from faucet using the new accounts. console.log("\n3. Make a transfer from faucet to secondAccount.\n"); deploy = keyManager.transferDeploy(mainAccount, secondAccount, TRANSFER_AMOUNT); await keyManager.sendDeploy(deploy, [firstAccount]); await keyManager.printAccount(mainAccount); // 4. Add new key with weight 1. console.log("\n4. Add new key with weight 1\n"); deploy = keyManager.keys.setKeyWeightDeploy(mainAccount, secondAccount, 1); await keyManager.sendDeploy(deploy, [mainAccount, firstAccount]); await keyManager.printAccount(mainAccount); })(); ``` File pakage.json => Add the scenario_3.js directory to package.json for calling script Run the script `npm run start:scenario_3` ![](https://i.imgur.com/3DTQffs.png) ## Task 4: Learn to transfer tokens to an account ``` (env) root@casper-janeisabelmw:~# casper-client transfer --transfer-id 0 --node-address http://161.97.77.69:7777 --amount 250000000000 --secret-key /root/key/secret_key.pem --chain-name casper-test --target-account 01dbda3859558b5d4db04014826691b008ffed7689827b67c1033199fc67bb336c --payment-amount 50000000000 { "id": -4825207245158508137, "jsonrpc": "2.0", "result": { "api_version": "1.3.2", "deploy_hash": "51005bc56a290bbc89fabbfd5afdebc944aba277088f1882dbb5a27c96b94dd6" } } ``` ``` (env) root@casper-janeisabelmw:~# casper-client get-deploy --node-address http://95.179.158.96:7777 51005bc56a290bbc89fabbfd5afdebc944aba277088f1882dbb5a27c96b94dd6 { "id": 2519281533440806254, "jsonrpc": "2.0", "result": { "api_version": "1.3.2", "deploy": { "approvals": [ { "signature": "[130 hex chars]", "signer": "01a0d100bdc7d058e915b8d100aa3b0180935ef3c3fe320d8ccf27f45bc50c0aed" } ], "hash": "51005bc56a290bbc89fabbfd5afdebc944aba277088f1882dbb5a27c96b94dd6", "header": { "account": "01a0d100bdc7d058e915b8d100aa3b0180935ef3c3fe320d8ccf27f45bc50c0aed", "body_hash": "3e55be6235fb072462633d9788a2240c77b10abb6933e66cede4b5a6fedde1ba", "chain_name": "casper-test", "dependencies": [], "gas_price": 1, "timestamp": "2021-09-20T20:18:36.549Z", "ttl": "30m" }, "payment": { "ModuleBytes": { "args": [ [ "amount", { "bytes": "0500743ba40b", "cl_type": "U512", "parsed": "50000000000" } ] ], "module_bytes": "" } }, "session": { "Transfer": { "args": [ [ "amount", { "bytes": "05004429353a", "cl_type": "U512", "parsed": "250000000000" } ], [ "target", { "bytes": "4ba25af2c0244acae3bedc127d0409acee487ad82873617f35cbf519ea8beace", "cl_type": { "ByteArray": 32 }, "parsed": "4ba25af2c0244acae3bedc127d0409acee487ad82873617f35cbf519ea8beace" } ], [ "id", { "bytes": "010000000000000000", "cl_type": { "Option": "U64" }, "parsed": 0 } ] ] } } }, "execution_results": [] } } ``` ![](https://i.imgur.com/0F7lvrE.png) ## Task 5: Learn to Delegate and Undelegate on the Casper Testnet **Delegate to Validator** ![](https://i.imgur.com/jdWQFL8.png) ![](https://i.imgur.com/9zDMVJU.png) **Undelegate from Validator** ![](https://i.imgur.com/oJ2qScn.png) ![](https://i.imgur.com/eupESvG.png)