---
# System prepended metadata

title: Getting started with Casper

---

# Getting started with Casper

This is a document about my implementation of the five tasks for gitcoin bounty, [Get Started With Casper](https://gitcoin.co/issue/casper-network/gitcoin-hackathon/29/100026611).

## 1. Create and deploy a simple, smart contract [with cargo casper and cargo test](https://docs.casperlabs.io/en/latest/dapp-dev-guide/setup-of-rust-contract-sdk.html)

This is about building my first smart contract on the casper network. The sub task includes
* Installing rust, since I didn't have it before.
* Install `cargo-casper` with rust package manager, `cargo`.
* Create the project which I named `first_project`
* Compile to `WebAssembly` because that's what casper blockchain uses in its runtime environment.
* Build and test the contract.

**Below are screenshot of building the contract and the result of the test.**

![A screenshot of building the contract](https://i.imgur.com/sfgLMRP.png)

![A screenshot of testing the contract](https://i.imgur.com/eazuefU.png)


## 2. Complete one of the [existing tutorials](https://docs.casperlabs.io/en/latest/dapp-dev-guide/tutorials/index.html) for writing smart contracts

I choose the [ERC-20](https://docs.casperlabs.io/en/latest/dapp-dev-guide/tutorials/erc20/index.html) because it sounds familiar.
* Prepare by cloning the [erc20 repo](https://github.com/casper-ecosystem/erc20), and run make commands to compile and test contracts.
* Read the code explanation. **It's hard to follow because the files/directory the in repo has changed, the tutorial needs to be updated,**

![Implementation of ERC-20](https://i.imgur.com/Z3AnpHT.png)

## 3. Demonstrate [key management concepts](https://docs.casperlabs.io/en/latest/dapp-dev-guide/tutorials/multi-sig/index.html) by modifying the client in the Multi-Sig tutorial to address one of the [additional scenarios](https://docs.casperlabs.io/en/latest/dapp-dev-guide/tutorials/multi-sig/examples.html)

I hate this part because of `Error: Cannot open an HTTP server: socket.error reported AF_UNIX path too long`. Had issue with this until I moved working directory to Home. Oh, and you made the mistake of referencing `key-manager.js` instead of `scenario-atomic.js`.

I choose scenario 1. All weights are defaulted to 1, so I just ran 3 tasks with mainAccount only.
* Transfer to secondAccount (which does not exist).
* Add firstAccount
* And remove the firstAccount

Below is the code to achieve those tasks.
![Code for multi sig](https://i.imgur.com/at8Bs7S.png)


## 4. Learn to transfer tokens to an account on the Casper Testnet. Check out this documentation.

I made transfer with casper-client CLI

![Transfer command](https://i.imgur.com/3Op6I6Q.png)



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

Pretty easy to delegate and undelegate on casper testnet and below are the screenshots after completion.

![Screenshot after delegating](https://i.imgur.com/E1tHqNV.png)

![Screenshot after undelegating](https://i.imgur.com/AHNDzYp.png)
