Go to file
Ryan Heywood 6a3ab8a64b
icepick: don't open a Keyfork client if not deriving keys
2024-12-20 19:56:37 -05:00
.cargo add distrust repository 2024-11-26 07:15:23 -05:00
crates icepick: don't open a Keyfork client if not deriving keys 2024-12-20 19:56:37 -05:00
e2e-tests/solana fixup URL, logic was inverted, and suffix jq to broadcast for formatting 2024-12-20 17:53:02 -05:00
.gitignore Initial commit 2024-11-20 13:16:55 -05:00
Cargo.lock icepick sol transfer-token 2024-12-03 12:32:31 -05:00
Cargo.toml crates/coin: cleanup old unused code 2024-11-26 07:15:13 -05:00
README.md add WIP progress towards Solana transfer 2024-11-26 07:13:38 -05:00
icepick.toml icepick workflow: it makes a signed transaction!!! 2024-12-20 19:47:17 -05:00

README.md

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.

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