---
# System prepended metadata

title: Get started with Casper

---

# Get started with Casper

## 1. Create and deploy a simple, smart contract with cargo casper and cargo test

![](https://i.imgur.com/WXaurgJ.png)

Starting Node

![](https://i.imgur.com/bhXZ04I.png)

Deploy Contract

![](https://i.imgur.com/VPikrPo.png)

Get deploy contract

 ![](https://i.imgur.com/exOXNlI.png)

## 2. Complete one of the existing tutorials for writing smart contracts

**A Counter Contract Tutorial**

![](https://i.imgur.com/mqEyhAJ.png)

"account_hash": "account-hash-0492cbc0043de33ab620b6e206c893db68d3009f50e4600cb83236ae2c2c4436"
secret key    : /root/casper-node/utils/nctl/assets/net-1/faucet/secret_key.pem

 ![](https://i.imgur.com/OlRVz9B.png)

"state_root_hash": "e61922bb37c6b45d9744086e96d16377bea47bde1fc67926d2aac07763685dd0"

 ![](https://i.imgur.com/WPUBKHS.png)

Make prepare

 ![](https://i.imgur.com/9C0bAIH.png)

Make test

 ![](https://i.imgur.com/8rCacOm.png)

Put the contract on the chain.

 ![](https://i.imgur.com/yGXbo0A.png)

(env) root@alexander:~/counter# casper-client put-deploy --node-address http://localhost:11101 --chain-name casper-net-1 --secret-key /root/casper-node/utils/nctl/assets/net-1/faucet/secret_key.pem --payment-amount 5000000000000 --session-path ./target/wasm32-unknown-unknown/release/counter-define.wasm
{
  "id": -232548569025400700,
  "jsonrpc": "2.0",
  "result": {
    "api_version": "1.0.0",
    "deploy_hash": "bbaff5aebdc5e6ce726c5d35d79c10c18c260865db5b8941034f8c93fe50d36a"
  }
}

Verify that the deploy successfully took place.
 ![](https://i.imgur.com/YKaq4iM.png)

Get the NEW state-root-hash:

 ![](https://i.imgur.com/pwaFjFw.png)

Get the network state:

![](https://i.imgur.com/dkzSexR.png)

Increment the Counter

 ![](https://i.imgur.com/7DVwgmL.png)

(env) root@alexander:~/counter# casper-client put-deploy --node-address http://localhost:11101 --chain-name casper-net-1 --secret-key /root/casper-node/utils/nctl/assets/net-1/faucet/secret_key.pem --payment-amount 5000000000000 --session-name "counter" --session-entry-point "counter_inc"

View the Updated Network State Again

Get the NEW state-root-hash:

 ![](https://i.imgur.com/OQy0CGL.png)

Get the network state, specifically for the count variable this time:

![](https://i.imgur.com/mqXApnC.png)

## 3. Demonstrate key management concepts by modifying the client in the Multi-Sig tutorial to address one of the additional scenarios

Compile the smart contract and create the WASM file:

![](https://i.imgur.com/sBL8Fbf.png)

Setting up the Client

![](https://i.imgur.com/tgfb6qm.png)

Testing the Client

![](https://i.imgur.com/mb3gHGn.png)

**Scenario 2: deploying with special keys**

Add the scenario 2 script to package.json

![](https://i.imgur.com/rKPS88q.png)

Result:

![](https://i.imgur.com/hs1GMHV.png)

## 4. Learn to transfer tokens to an account on the Casper Testnet. 

Create an account:

![](https://i.imgur.com/5VWRXF3.png)

Get faucet to this account:

![](https://i.imgur.com/9M17EPn.png)

Transfer to the second account:

![](https://i.imgur.com/Yng6tHM.png)

## 5. Learn to Delegate and Undelegate on the Casper Testnet. Check out these instructions.

Delegate

![](https://i.imgur.com/dgbH2OL.png)

Undelegate

![](https://i.imgur.com/iC0n4h3.png)

-----The end-----









