Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Page properties


Project TitleImplement a CLI for node interactions in Hyperledger Solang
Status

Status
colourBlueGreen
titlePending TOC Reviewcompleted

Primary Focus

Status
colourGreen
titleCoding
  


...

Hyperledger Solang is a Solidity compiler written in Rust. It currently targets Substrate contracts pallet (pallet-contractsPolkadot) and Solana smart contract runtimes. After successful compilation, users need to upload the compiled contract artifacts to a blockchain node, so it can be interacted with. At the time of writing, this needs to be done manually via third-party web front-ends. Which results in an inefficient and tiring process during iterative contract development.

...

  • Gather requirements and outline a generic interface that will be usable for both supported targets (Substrate and Solana).
  • Implement the CLI as a sub-command commands for Solang:.
    • For the Substrate target;  cargo-contract already provides a CLI for node interactions (Substrate target), however it does not yet support Solidity contracts.
    • For the Solana target
  • Describe the CLI in Solang's documentation.

...

  • Designing re-usable interfaces
  • Analyzing and understanding code bases of reasonable sizes
  • Refactoring existing components and implementing new features in Rust
  • Contributing maintainable code to open source projects
  • Getting proficient in working with tools like git

Additionally, students will learn about smart contracts, Substrate and Solana in general.

Expected Outcome

  • Solang provides a working and documented CLI for node interactions with Substrate and Solana. Options for sub-commands (like RPC end-point, account to use, dry-run flag, gas limits, verbosity and other specific options) must be configurable by the user.
    • A sub-command for uploading contracts.
    • A sub-command for instantiating contracts.
    • A sub-command for calling contract functions. This command must correctly encode transaction input, display and show the calls output and debug output as well as emitted events.
    • A sub-command for listening to emitted events.
  • The student should factor the relevant parts of cargo-contract out into a dedicated library (crate) to make it usable in Solang.
  • Developed source code is of adequate quality, merged in the projects upstream repositories and have undergone common Pull Request processes.

...