Deployer - Information and How-To Guides
Welcome to Project Casper Deployer!
CasperLabs Hackaton October 2022 π» ππ―οΈ
Project built with πβ₯πβ€ for Casper Blockchain
π Project
This projects aims to ease interactions with Casper Blockchain during smart contracts development and for regular queries done with the Casper Client CLI
This project relies on casper-js-sdk and casper-rust-sdk to help with onboarding developers on the Casper Network and also users by providing better insights on Casper Blockchain concepts (URef, Dictionnaries etc..) and with giving the ability to deploy a smart contract signed with the Capser Signer.
βοΈ Casper Signer
Using Chrome or a Chromium-based browser like Brave ? visit the Chrome Web Store, then download and install CasperLabs Signer extension
π CasperLabs Signer acts as your CSPR wallet, keeping your accounts and letting you sign deploys on the Casper Network to perform actions like staking, unstaking or sending your tokens to another person or an exchange account.
For Casper Signer Users
#
π Tech Stack
#
ποΈ Architecture
Web Server
Web server is implemented in Express.js.
Api Server
Api server is implemented in NestJS+ Nx structure.
Client
UI is implemented in Angular.js + Nx structure.
Smart contracts
Smart contracts are implemented in Rust + Casper Smart contract Crate.
Folders at root directory is as follow :
- casper-sdk: contains the Casper Rust SDK in two versions, web and nodejs
- docker: contains Docker files
- wasm: contains client wasm files
- www: contains the Web application files
#
π Features
- Header
- [β] Integrate with Casper Signer
- [β] Display active public key and account balance
- Network
- [β] Input Network Peer
- [β] Select from Network Peers
- [β] Check Peer status
- [β] Change RPC ending suffix
- [β] Retrieve Root State Hash
- Config
- [β] Input Root State Hash
- [β] Retrieve from Signer or input Public Key
- [β] Retrieve Puse URef associated with Public key
- [β] Retrieve Balance associated with Public key
- Transfer
- [β] Transfer from active Public Key
- [β] Transfer from other Public Key or Purse Uref
- [β] Transfer to Public Key
- [β] Transfer to Purse Uref
- [β] Define Amount to transfer
- Purse
- [β] Input Purse URef
- [β] Retrieve Balance associated with URef
- State
- [β] Input URef / Hash / Deploy Hash / Account Hash
- [β] Input Named Key Path
- [β] Retrieve State value
- Dictionaries
- [β] Input Dictionary item key
- [β] Input Dictionary URef
- [β] Input Dictionary name
- [β] Input Contract hash
- [β] Retrieve Dictionary value
- Deploy
- [β] Input Chain name
- [β] Select from Chain names
- [β] Input Public Key
- [β] Input Public Key
- [β] Input Gas Fee max for a deploy payment
- [β] Input Time To Live max for a deploy payment
- [β] Select Wasm file (ModuleBytes)
- [β] Input Contract or Package name
- [β] Input Contract or Package hash
- [β] Input Entry point
- [β] Input Args
- [β] Input Contract or Package as target of the deploy
- [β] Input Package version of the deploy
- [β] Make deploy
- [πͺ²] (bugged) Speculative test deploy
- [β] Sign with Signer and send deploy to network
- Output
- [β] Display active query results
- Notes
- [β] Dummy notes takedown
#
π£οΈ Roadmap / Todo / Tofix
#
π§ββοΈ Development
Prerequisites
- npm >= 10.2.5
- nodejs >= v20.10.0
This web project was generated and is using
#
π³ Docker
Donwload and run image with docker-compose.yml π
docker-compose -f './docker/docker-compose.yml' up -d
OR
Pull and run image from https://hub.docker.com/r/gregoshop/casper-deployer πββοΈ
docker pull gregoshop/casper-deployer
docker container run -t -i --rm -h casper-deployer -p 4200:4200 gregoshop/casper-deployer
OR
Build and run image with Dockerfile πββοΈ
docker build -t casper-deployer ./docker/ --force-rm
docker container run -t -i --rm -h casper-deployer -p 4200:4200 casper-deployer
Navigate to http://localhost:4200/
#
π οΈ Usage with npm
Install
π Go to www
folder
Run npm install
to install the application.
Development server
Run npm start
for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.
Development server as production
Run npm run start:prod
for a dev server with production configuration. Navigate to http://localhost:4200/.
Build
Run npm run build
to build the project. The build artifacts will be stored in the dist/
directory.
Running unit tests
Run npm run test
to execute the unit tests via Jest.
Run nx affected:test
to execute the unit tests affected by a change.
Running end-to-end tests
Run npm run e2e
to execute the end-to-end tests via Cypress.
Run nx affected:e2e
to execute the end-to-end tests affected by a change.
π Configuration
Settings can be changed in /www/libs/util/config/src/config.ts
Default example settings are
{
"api_prefix": "/api/",
"gasFee": "150000000",
"minimumTransfer": "25000000000",
"TTL": "30m",
"idMax": "100000000",
"gasFeeTransfer": "10000"
}
π Understanding the workspace
Run nx graph
to see a diagram of the dependencies of the projects.
πβπ¦Ί Further help
Visit the Nx Documentation to learn more.
#
π§ Workflow and contributions
β οΈ Work in Progress
https://github.com/gRoussac/casper-deployer-hackathon-oct-2022/blob/Development-Workflow
π License
GNU GENERAL PUBLIC LICENSE
π¦Ί Security
https://github.com/gRoussac/casper-deployer-hackathon-oct-2022/blob/master/SECURITY.md
βHave questions?
Go to the #hackathon
channel on Discord
πͺ¦ Errors ?
If you see any typos or errors you can edit the code directly on GitHub and raise a Pull Request on dev
branch, many thanks !