2024-11-26 12:13:38 +00:00
|
|
|
# Icepick
|
|
|
|
|
|
|
|
Icepick is a framework for rapidly developing applications to perform transfer
|
|
|
|
and staking cryptocurrency operations.
|
|
|
|
|
|
|
|
## Implementing a New Coin
|
|
|
|
|
|
|
|
Coins are implemented using the `icepick_coin::Coin` trait. Implementing the
|
|
|
|
trait should act as a "flow" for implementing the coin.
|
|
|
|
|
|
|
|
The crate will need the `clap` dependency for generating the CLI command and
|
|
|
|
the `icepick-coin` dependency for implementing the `Coin` trait.
|
|
|
|
|
|
|
|
`Coin` should be implemented on marker structs that can be easily placed in the
|
|
|
|
main Icepick program.
|
|
|
|
|
2024-11-20 18:16:19 +00:00
|
|
|
## Bitcoin
|
|
|
|
|
|
|
|
Bitcoin is a native coin, and does not require any kind of custom token support
|
|
|
|
atop an existing blockchain.
|
|
|
|
|
|
|
|
Possible routes to enable BTC transfer:
|
|
|
|
|
|
|
|
* `bitcoin` Rust module should support creating and signing transactions, as
|
|
|
|
well as communicating with a Bitcoin node
|
|
|
|
|
|
|
|
## Ethereum
|
|
|
|
|
|
|
|
Ethereum is the native currency of the Ethereum blockchain. Ethereum supports
|
|
|
|
proof-of-stake, so staking needs to be enabled as well. The Ethereum blockchain
|
|
|
|
is also the host of many tokens, meaning Ethereum token transactions should
|
|
|
|
also be supported.
|
|
|
|
|
|
|
|
Possible routes to enable ETH and Ethereum Token transfer:
|
|
|
|
|
|
|
|
* Alloy, the Rust Ethereum project, should enable the necessary functionality
|
|
|
|
|
|
|
|
## Solana
|
|
|
|
|
|
|
|
Solana is a Rust-native coin and can be used to host tokens. Solana
|
|
|
|
incorporates proof-of-stake, so staking functionality is also required.
|
|
|
|
|
|
|
|
Possible routes to enable SOL and Solana Token transfer:
|
|
|
|
|
|
|
|
* Load Keyfork-derived key onto Ledger device
|
|
|
|
* Perform transaction using Solana SPL CLI to transfer tokens
|
|
|
|
* `spl-token transfer --sign-only`
|
|
|
|
* `solana-client` Rust crate should have necessary functionality
|
|
|
|
|
|
|
|
## Pyth
|
|
|
|
|
|
|
|
PYTH is a token that can be traded on the Solana network. The token is like an
|
|
|
|
NFT that can have multiple amounts, so to transfer PYTH, you're basically just
|
|
|
|
transferring that amount of an NFT.
|
|
|
|
|
|
|
|
Possible routes to enable PYTH transfer:
|
|
|
|
|
|
|
|
* Load Keyfork-derived key onto Ledger device
|
|
|
|
* Perform transaction using Solana SPL CLI to transfer tokens
|
|
|
|
* `spl-token transfer --sign-only`
|
|
|
|
|
|
|
|
## Stride (Token)
|
|
|
|
|
|
|
|
STRD is a coin using Inter-Blockchain Communication to interact with other
|
|
|
|
coins in the Cosmos ecosystem.
|
|
|
|
|
|
|
|
Possible routes to enable STRD transfer:
|
|
|
|
|
|
|
|
* Use `stride` to communicate with Stride
|
|
|
|
* Build CLI with `cosmrs` to communicate with Osmosis or Stride
|
|
|
|
|
|
|
|
## Ronin
|
|
|
|
|
|
|
|
Ronin uses the EVM on its own blockchain, meaning we can use the above
|
|
|
|
guidelines for Ethereum to connect.
|
|
|
|
|
|
|
|
Possible routes to enable Ronin transfer:
|
|
|
|
|
|
|
|
* `alloy`, in a similar manner to ETH
|
|
|
|
|
|
|
|
## Spacemesh
|
|
|
|
|
|
|
|
Spacemesh is a unique blockchain written in Go, but providing a Rust SDK. Proof
|
|
|
|
of stake doesn't seem to be supported, so staking would not be an option for
|
|
|
|
this blockchain.
|
|
|
|
|
|
|
|
Possible routes to enable Spacemesh transfer:
|
|
|
|
|
|
|
|
* Spacemesh Rust SDK crate
|
|
|
|
* Spacemesh Go SDK, ported to Rust
|