Participants
C.Saito@broadleaf.co.jp
Goals
Using the Docker ‘hack’ - create a local network.
Install the client on their local machine
Compile the contracts - we will deploy counter-define and then counter-call
Deploy to your local network
Observe effects
We will record the session.
Pre-Requisites
Clone the repository on your machine
git clone https://github.com/CasperLabs/CasperLabs.git
2. Install docker and docker compose
docker: https://docs.docker.com/v17.09/engine/installation/
docker-compose: https://docs.docker.com/compose/install/
3. Pull the dev images from docker
docker pull casperlabs/node:dev docker pull casperlabs/execution-engine:dev
4. Export CL_VERSION to dev
export CL_VERSION=dev
Update: due to version mismatches please either build the client or use the tarball.
curl -O https://repo.casperlabs.io/casperlabs/repo/dev/casperlabs-client-0.10.0.tgz tar -xvzf casperlabs-client-0.10.0.tgz alias casperlabs-client=$PWD/casperlabs-client-0.10.0/bin/casperlabs-client
Please verify that the version of node and client match each other! They don’t necessarily have to match this example.
docker run --rm casperlabs/node:dev --version CasperLabs Node 0.10.0 (7d61732e71e566cc037e7a490a9c34921b9c38b9) casperlabs-client --version CasperLabs Client 0.10.0 (7d61732e71e566cc037e7a490a9c34921b9c38b9)
6. Compile the contracts
Navigate to the execution-engine folder to build the example smart contracts.
cd ~/CasperLabs/execution-engine make setup make build-example-contracts
7. Run CLarity locally so you can observe your local blockchain! From the /hack/docker folder run:
make up
Software Version (GitHash)
Docker tag: dev
What you need to know:
To simplify the process, we are deploying from the faucet account (we can skip funding an account to pay for the deployment)
Step by Step Plan
Title | Description | Notes |
---|---|---|
Verify pre-requisites | Check that everyone has managed to get through the setup. | See above |
Set up a local 3 node network | Using the Docker hack, set up a local network |
Wait and let the system generate keys. Start the bootstrap: make node-0/up Start the other nodes make node-1/up node-2/up Verify that the network is working by looking at the logs docker logs -f node-0 To remove old networks use: make clean |
Deploy counter-define Propose a block Deploy counter-call Propose a block | Here we will deploy a contract to the local network to install it. Then we will call the contract using a separate transaction. | Counter Define deployment & Proposal cd ~/CasperLabs/hack/docker ACCOUNT_ID="$(cat keys/faucet-account/account-id-hex)" casperlabs-client --host localhost --port 40401 deploy \ --gas-price 1 \ --from "$ACCOUNT_ID" \ --session $PWD/../../execution-engine/target/wasm32-unknown-unknown/release/counter_define.wasm \ --payment-amount 10000000 \ --public-key keys/faucet-account/account-public.pem \ --private-key keys/faucet-account/account-private.pem casperlabs-client --host localhost --port-internal 40402 propose Counter Call deployment cd ~/CasperLabs/hack/docker ACCOUNT_ID="$(cat keys/faucet-account/account-id-hex)" casperlabs-client --host localhost --port 40401 deploy \ --gas-price 1 \ --from "$ACCOUNT_ID" \ --session $PWD/../../execution-engine/target/wasm32-unknown-unknown/release/counter_call.wasm \ --payment-amount 10000000 \ --public-key keys/faucet-account/account-public.pem \ --private-key keys/faucet-account/account-private.pem casperlabs-client --host localhost --port-internal 40402 propose
|
Propose a block | Call the client to propose a block | Same as above. |
Obtain the block hash | Obtain the block hash for use in the state query | Call the client to get the block hash (can also tail the logs and see the block in the network) casperlabs-client --host localhost --port 40401 show-blocks |
Perform a state query | Using the gRPC | casperlabs-client --host localhost --port 40401 query-state \ -t address \ -k $ACCOUNT_ID \ -p "counter/count" \ --block-hash <block-hash-of the latest block> |
Outcome:
The export needs to happen again if a new terminal is opened.
Make sure that you don’t have any old Docker containers floating around from old nodes.
Do not make a mistake when creating node-0 (Medha did node-o and it was problematic)
To add CLarity and GraphQL to the Docker network run:
make up
It won’t be possible to fund accounts using CLarity, but it is possible to observe what the deploy errors are.
We ran into problems with payment. Root cause - there IS a version difference with the client that matters. This will be resolved when Node 0.10 releases. In the meantime, grab the tarball or build the client from dev.
https://repo.casperlabs.io/casperlabs/repo/dev/casperlabs-client-0.10.0.tgz tar -xvzf casperlabs-client-0.10.0.tgz alias casperlabs-client=$PWD/casperlabs-client-0.10.0/bin/casperlabs-client
Action items
For Help - go to Discord: https://discord.gg/mpZ9AYD