Cosmos-compatible Transfer #12

Open
opened 2024-11-24 23:26:38 +00:00 by ryan · 3 comments
Owner

Stages:

  • Define Module Interfaces
    • Transaction generation
    • Transaction validation
    • Transaction signing
    • Transaction broadcasting
  • Create standardized derivation paths in Keyfork
  • Implement Module Interfaces
    • Transaction generation
    • Transaction validation
    • Transaction signing
    • Transaction broadcasting
Stages: - [ ] Define Module Interfaces - [ ] Transaction generation - [ ] Transaction validation - [ ] Transaction signing - [ ] Transaction broadcasting - [ ] Create standardized derivation paths in Keyfork - [ ] Implement Module Interfaces - [ ] Transaction generation - [ ] Transaction validation - [ ] Transaction signing - [ ] Transaction broadcasting
ryan added this to the Custody Framework project 2024-11-24 23:26:38 +00:00
ryan added this to the Icepick v0.2.0 milestone 2024-12-12 20:34:52 +00:00
Author
Owner

Derivation paths are weird. Most coins use the slip44 118 index. This is the derivation path for ATOM. I think this implies keys are reused across l1 blockchains, which is not ideal.

Derivation paths are weird. Most coins use the `slip44` 118 index. This is the derivation path for ATOM. I think this implies keys are reused across l1 blockchains, which is not ideal.
Author
Owner

Working on this further, I encountered an issue where cosmrs... doesn't have good serialization of, like, any of their types. Transactions aren't Serialize/Deserialize, Fee is Serialize, but uses u128 instead of repr'd as two u64, which means serde_json can't Deserialize it because its buffer can't fit it. It's also not repr(C) so I can't "just" bytemuck it or similar. I'll likely have to impl newtypes for all input and output variables. Currently, there's one half-working for Fee.

I'll likely implement some kind of Either<A, B> { A(A), B(B) } where A: From<B>, B: From<A>.

Working on this further, I encountered an issue where cosmrs... doesn't have good serialization of, like, any of their types. Transactions aren't Serialize/Deserialize, Fee _is_ Serialize, but uses u128 instead of repr'd as two u64, which means serde_json can't Deserialize it because its buffer can't fit it. It's also not repr(C) so I can't "just" bytemuck it or similar. I'll likely have to impl newtypes for all input and output variables. Currently, there's one half-working for Fee. I'll likely implement some kind of `Either<A, B> { A(A), B(B) } where A: From<B>, B: From<A>`.
Author
Owner

https://explorer.kyve.network/korellia/tx/04D28CDA1B8566739C7BAE57991E7D2B51DDDB7EB500717AB0CDB9C1D25E5B3C

URL automatically generated from icepick, too.

{
  "blob": {
    "status": "send_and_confirm",
    "success": "C12B67F239A71642847C0E52A3D41724903E422EE936B57394508A87CDAFC85F",
    "url": "https://explorer.kyve.network/korellia/tx/C12B67F239A71642847C0E52A3D41724903E422EE936B57394508A87CDAFC85F"
  }
}
https://explorer.kyve.network/korellia/tx/04D28CDA1B8566739C7BAE57991E7D2B51DDDB7EB500717AB0CDB9C1D25E5B3C URL automatically generated from icepick, too. ``` { "blob": { "status": "send_and_confirm", "success": "C12B67F239A71642847C0E52A3D41724903E422EE936B57394508A87CDAFC85F", "url": "https://explorer.kyve.network/korellia/tx/C12B67F239A71642847C0E52A3D41724903E422EE936B57394508A87CDAFC85F" } } ```
Sign in to join this conversation.
No Label
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: public/icepick#12
No description provided.