---
# System prepended metadata

title: 'Counter Contract Cheetsheet (Copied from Maciej: https://hackmd.io/@N6RypFCeTaCW_p1Hfqw5uw/r1jL9NJ3O)'

---

# Counter Contract Cheetsheet (Copied from Maciej: https://hackmd.io/@N6RypFCeTaCW_p1Hfqw5uw/r1jL9NJ3O)
## Use Counter Contract - cheatsheet

#### 0. Generate account keys (if you have not already)
```
mkdir ../keys/integration.cspr.live/
casper-client keygen ../keys/integration.cspr.live/
```

and fund the keys (ask CasperLabs team for test tokens).

#### 1. Get the account status from the global state
#### 1.1. Check account status – get the account address hash
```
casper-client account-address --public-key ../keys/integration.cspr.live/public_key_hex
#### My public key: ac26250eba20b2337c4b93235654eaa503df4b665f0894aac26452cb409465d9
```

#### 1.2. Check account status – get the state root hash

You can retrieve an IP of one of the validator nodes from: https://integration.cspr.live/tools/peers

```
casper-client get-state-root-hash --node-address http://3.140.179.157:7777/rpc
```

#### 1.3. Get this account's status from the global state
```
casper-client query-state \
    --node-address http://3.140.179.157:7777/rpc \
    --state-root-hash <STATE_ROOT_HASH> \
    --key account-hash-ac26250eba20b2337c4b93235654eaa503df4b665f0894aac26452cb409465d9
```

#### 2. Compile the contracts and run the tests
```
make prepare
make test
```

#### 3. Deploy the counter-define.wasm contract to the chain using 25 CSPR
```
casper-client put-deploy \
    --node-address http://3.140.179.157:7777/rpc \
    --chain-name integration-test \
    --secret-key ../keys/integration.cspr.live/secret_key.pem \
    --payment-amount 25000000000 \
    --session-path ./target/wasm32-unknown-unknown/release/counter-define.wasm
```

#### 4. Check the status of the deploy
#### 4.1. Option 1 – Use the CLI to ping the node directly
```
casper-client get-deploy --node-address http://3.140.179.157:7777/rpc <DEPLOY_HASH> 
```

#### 4.2. Option 2 – Use the integration test block explorer 

https://integration.cspr.live/ (you must wait for the gossip to happen)

#### 5. Check the account status on the network again
#### 5.1. Check account status – get the state root hash
```
casper-client get-state-root-hash --node-address http://3.140.179.157:7777/rpc
```

#### 5.2. Get the account status from the global state to see the count value
```
casper-client query-state \
    --node-address http://3.140.179.157:7777/rpc \
    --state-root-hash ################################################################### \
    --key account-hash-ac26250eba20b2337c4b93235654eaa503df4b665f0894aac26452cb409465d9 \
    -q "counter/count"
```

#### 6. Invoke the counter_inc entry-point
```
casper-client put-deploy \
    --node-address http://3.140.179.157:7777/rpc \
    --chain-name integration-test \
    --secret-key ../keys/integration.cspr.live/secret_key.pem \
    --payment-amount 100000000 \
    --session-name "counter" \
    --session-entry-point "counter_inc"
```

#### 7. Check the account status on the network again
#### 7.1. Check account status – Check the status of the deploy
#### Option 1 – Use the CLI to ping the node directly
```
casper-client get-deploy --node-address http://3.140.179.157:7777/rpc <DEPLOY_HASH>
```
#### Option 2 – Use the integration test block explorer 

https://integration.cspr.live/ (must wait for the gossip)

#### 7.2. Check account status – get the state root hash
```
casper-client get-state-root-hash --node-address http://3.140.179.157:7777/rpc
```

#### 7.3. Get the account status from the global state to see the count value
```
casper-client query-state \
    --node-address http://3.140.179.157:7777/rpc \
    --state-root-hash <STATE_ROOT_HASH> \
    --key account-hash-ac26250eba20b2337c4b93235654eaa503df4b665f0894aac26452cb409465d9 \
    -q "counter/count"
```

#### 8. Deploy the counter-call.wasm to increment the counter again
```
casper-client put-deploy \
    --node-address http://[NODE_IP_ADDRESS]:7777 \
    --chain-name integration-test \
    --secret-key ../keys/integration.cspr.live/secret_key.pem \
    --payment-amount 25000000000 \
    --session-path ./counter/target/wasm32-unknown-unknown/release/counter-call.wasm
```

#### 9. Check the account status on the network again
#### 9.1. Check account status – Check the status of the deploy
#### Option 1 – Use the CLI to ping the node directly
```
casper-client get-deploy --node-address http://3.140.179.157:7777/rpc <DEPLOY_HASH>
```
#### Option 2 – Use the integration test block explorer

https://integration.cspr.live/ (must wait for the gossip)

#### 9.2. Check account status – get the state root hash
```
casper-client get-state-root-hash --node-address http://3.140.179.157:7777/rpc
```

#### 9.3. Get the account status from the global state to see the count value
```
casper-client query-state \
    --node-address http://3.140.179.157:7777/rpc \
    --state-root-hash ################################################################### \
    --key account-hash-ac26250eba20b2337c4b93235654eaa503df4b665f0894aac26452cb409465d9 \
    -q "counter/count"
```