Get started with Casper **Task 1: Deploy a simple, smart contract with cargo casper and cargo test** 1.1 Writting SmartContract AssemblyScript ![](https://i.imgur.com/szW9uBx.png) 1.2 Installing a Virtual Environment and Accessing to **env** ![](https://i.imgur.com/tPRo2Ph.png) 1.3 Deploying Contracts Nightly version of the compiler. ![](https://i.imgur.com/G8fzvvO.png) Final Deployment ![](https://i.imgur.com/0qrBmsI.png) ![](https://i.imgur.com/5KLE79v.png) ![](https://i.imgur.com/wEjZXYQ.png) **Task 2: Complete one of the existing tutorials for writing smart contracts** 2.1 Clone the contract from GitHub ![](https://i.imgur.com/0EETafO.png) 2.2 Prepare the environment ![](https://i.imgur.com/zAnggwu.png) 2.3 Compile the contract and run the contract unit tests Compile the contract ![](https://i.imgur.com/KfHUy5t.png) Run the contract unit tests ![](https://i.imgur.com/WIXpVLL.png) ![](https://i.imgur.com/dhJ3FDU.png) **Task 3: Demonstrate key management concepts by modifying the client in the Multi-Sig tutorial to address one of the additional scenarios** 3.1 Implementing the Smart Contract Download the example contract and client for key management. ![](https://i.imgur.com/TbK8hH3.png) 3.2 Building the Smart Contract. ![](https://i.imgur.com/CUcw1pO.png) ![](https://i.imgur.com/lYOwezQ.png) 3.3 Setting up a local Casper Network ![](https://i.imgur.com/OgCKlPD.png) See the faucet account details ![](https://i.imgur.com/RCSozcp.png) 3.4 Additional Scenarios > Scenario 1: signing transactions with a single key Code >> ![](https://i.imgur.com/YoCEYVZ.png) Run the code >> ``` > keys-manager@1.0.0 start:scenario_1 > node -r dotenv/config ./src/scenario_1.js 0.1 Fund main account. Signed by: account-hash-a9ec364847fdebff865f532c1023250c84b833d3a76496e51e48fbc9d18ecf24 Deploy hash: a0f2143c39b8db999eddbb221796605059f9334a91ae9d2347ba8d3f45db0ca5 Deploy result: { deploy: { hash: 'a0f2143c39b8db999eddbb221796605059f9334a91ae9d2347ba8d3f45db0ca5', header: { account: '01af862896071a1275f98c19250f4f8e600591e630eb38cb49c16db8b195cb0c65', timestamp: '2021-09-22T18:46:45.715Z', ttl: '30m', gas_price: 1, body_hash: '1215151fd53161ef2cde57c6ad7c5c6f4f4f9a4f0dca16f61ab498c06075bc96', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { Transfer: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', namedKeys: [], mainPurse: 'uref-8764c08db481fdf7844d4af8608cc51ecb7cb5bceeb6c82ab2ad98b48b393583-007', associatedKeys: [ { accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', weight: 1 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } [x]0.2 Install Keys Manager contract Signed by: account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d Deploy hash: 9117469712cd508ec2bbef828f212ef21e418e12f093d20e5e9d3de637268af2 Deploy result: { deploy: { hash: '9117469712cd508ec2bbef828f212ef21e418e12f093d20e5e9d3de637268af2', header: { account: '020286db789721776a5b4848c8bad1bf8e70c81927ae72c4e36e83a6b19a8c0c9f13', timestamp: '2021-09-22T18:47:48.928Z', 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-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', namedKeys: [ { name: 'keys_manager', key: 'hash-89ffd3591514ca83d881e521009f10e3ec1583f6485ad35f8ecd964007a0fd75' }, { name: 'keys_manager_hash', key: 'uref-742c8c49700dfb581bf2314673ac4230165ca5492497a805c432c00c282b69e5-007' } ], mainPurse: 'uref-8764c08db481fdf7844d4af8608cc51ecb7cb5bceeb6c82ab2ad98b48b393583-007', associatedKeys: [ { accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', weight: 1 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } 1. Set faucet's weight to 1 Signed by: account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d Deploy hash: 9d1e2bb6f53289bbb104cc7fd48fd8c2536ba18d720e7c73d76a797ad9a658be Deploy result: { deploy: { hash: '9d1e2bb6f53289bbb104cc7fd48fd8c2536ba18d720e7c73d76a797ad9a658be', header: { account: '020286db789721776a5b4848c8bad1bf8e70c81927ae72c4e36e83a6b19a8c0c9f13', timestamp: '2021-09-22T18:48:55.023Z', ttl: '30m', gas_price: 1, body_hash: 'bedcfddeeaf010655a4f415f4d143cd4d26c80d7c9cf763cb90c56952ed0135a', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', namedKeys: [ { name: 'keys_manager', key: 'hash-89ffd3591514ca83d881e521009f10e3ec1583f6485ad35f8ecd964007a0fd75' }, { name: 'keys_manager_hash', key: 'uref-742c8c49700dfb581bf2314673ac4230165ca5492497a805c432c00c282b69e5-007' } ], mainPurse: 'uref-8764c08db481fdf7844d4af8608cc51ecb7cb5bceeb6c82ab2ad98b48b393583-007', associatedKeys: [ { accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', weight: 1 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } 2. Set Keys Management Threshold to 1 Signed by: account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d Deploy hash: 0d40e352e5113ab6c4d6f8df193bb14db2484be71e12f58a208cc9448c7e77d0 Deploy result: { deploy: { hash: '0d40e352e5113ab6c4d6f8df193bb14db2484be71e12f58a208cc9448c7e77d0', header: { account: '020286db789721776a5b4848c8bad1bf8e70c81927ae72c4e36e83a6b19a8c0c9f13', timestamp: '2021-09-22T18:50:00.009Z', ttl: '30m', gas_price: 1, body_hash: 'fcbeef2291716fba37f9f05b6883b80e5985a3e7ccdd8e779cca24912b24871b', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', namedKeys: [ { name: 'keys_manager', key: 'hash-89ffd3591514ca83d881e521009f10e3ec1583f6485ad35f8ecd964007a0fd75' }, { name: 'keys_manager_hash', key: 'uref-742c8c49700dfb581bf2314673ac4230165ca5492497a805c432c00c282b69e5-007' } ], mainPurse: 'uref-8764c08db481fdf7844d4af8608cc51ecb7cb5bceeb6c82ab2ad98b48b393583-007', associatedKeys: [ { accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', weight: 1 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } 3. Set Deploy Threshold to 1. Signed by: account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d Deploy hash: b4fe5537258f0ac8652c8847211304140e6f900bf4ff83f83d37211a2deb0bfb Deploy result: { deploy: { hash: 'b4fe5537258f0ac8652c8847211304140e6f900bf4ff83f83d37211a2deb0bfb', header: { account: '020286db789721776a5b4848c8bad1bf8e70c81927ae72c4e36e83a6b19a8c0c9f13', timestamp: '2021-09-22T18:51:05.991Z', ttl: '30m', gas_price: 1, body_hash: '4807b024a8e1e7c7d1da5a9101a21f38303d4689905d88d4585eec852fd7216b', dependencies: [], chain_name: 'casper-net-1' }, payment: { ModuleBytes: [Object] }, session: { StoredContractByName: [Object] }, approvals: [ [Object] ] } } [x] Current state of the account: { _accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', namedKeys: [ { name: 'keys_manager', key: 'hash-89ffd3591514ca83d881e521009f10e3ec1583f6485ad35f8ecd964007a0fd75' }, { name: 'keys_manager_hash', key: 'uref-742c8c49700dfb581bf2314673ac4230165ca5492497a805c432c00c282b69e5-007' } ], mainPurse: 'uref-8764c08db481fdf7844d4af8608cc51ecb7cb5bceeb6c82ab2ad98b48b393583-007', associatedKeys: [ { accountHash: 'account-hash-87d6ab4b920ba4d43753913790a63d1e6cdaffcce984ceafe19f3300ebe5816d', weight: 1 } ], actionThresholds: { deployment: 1, keyManagement: 1 } } ``` **Task 4: Learn to transfer tokens to an account on the Casper Testnet.** ![](https://i.imgur.com/lQBD4JD.png) --- ![](https://i.imgur.com/ZPj6pZ2.png) **Task 5: Learn to Delegate and Undelegate on the Casper Testnet** > Delegate ![](https://i.imgur.com/mevdC7I.png) > Undelegate ![](https://i.imgur.com/sbm9MR1.png)