sygmaprotocol / sygma-sdk

A Typescript SDK to add cross-chain capabilities such as bridging tokens and sending messages across dApp projects.
https://docs.buildwithsygma.com/
GNU Lesser General Public License v3.0
31 stars 19 forks source link

Improve SDK to handle Substrate to Substrate logic #391

Open LyonSsS opened 2 months ago

LyonSsS commented 2 months ago

Context: Until recently we only supported transfer from Substrate to EVM so we used only a way to encode EVM format address on deposits. Now, we can extend deposits to new ways as: Substrate to Parachain or Substrate to Single Chain, which includes encoding e Substrate destination wallet.

Recent changes on BridgePallet ( Tangle chain) requires SDK update for this type of deposit.

  1. Substrate to Substrate Chain ( where this chain is the final destination)
    GeneralKey { length: path_len, data: sygma_path },
    GeneralIndex(dest_domain_id),
    Junction::AccountId32 { network: None, id: recipient}

image

  1. Substrate to Substrate Chain ( where the first Chain is not the dest chain, so we need Forwarder to reach the desired Parchain Destination)
    
    GeneralKey { length: path_len, data: sygma_path },
    GeneralIndex(dest_domain_id),
    Parachain(parachain_id),
    Junction::AccountId32 { network: None, id: recipient }
![image](https://github.com/sygmaprotocol/sygma-sdk/assets/30255634/cc09a72e-b86d-4769-8dfa-b17834fef550)

3. Substarte to EVM 

GeneralKey { length: path_len, data: sygma_path }, GeneralIndex(dest_domain_id), GeneralKey { length: recipient_len, data: recipient },


![image](https://github.com/sygmaprotocol/sygma-sdk/assets/30255634/2cde2630-d3d4-47f9-acd2-a5761e845045)

Also I provide success Extrinsics below
From Tangle to Rhala

PHA token deposits 

`0x09048400cec3f9df482b8de041a81dae22a494a3446966fcf1fab4afbf4fc00028e914240120f3eef6364fa75f232e2c3a69e504af21c7c8528d37fdf977a0e05a9d51f61e8b79b540fb92b8984a9198b6ef1de0c65ff3ccacd0b00690409140cb7a61638b0501cc003105010300511f06057379676d6100000000000000000000000000000000000000000000000000000006037068610000000000000000000000000000000000000000000000000000000000000b0030ef7dba02000306057379676d61000000000000000000000000000000000000000000000000000000050c0100cec3f9df482b8de041a81dae22a494a3446966fcf1fab4afbf4fc00028e91424`

sygUSDC deposits 

`0xfd038400cec3f9df482b8de041a81dae22a494a3446966fcf1fab4afbf4fc00028e91424016a6fb3f98c0e8a0c72bf53a3f270acaac43cf489c0ce6ca778e49c008f59f458c5f8735fc64ff94314569ac667bab9c3a28c471645a4476a3f5c2d1143c74f89b501d8003105010300a10f06057379676d610000000000000000000000000000000000000000000000000000000606737967757364000000000000000000000000000000000000000000000000000000021bb700000306057379676d61000000000000000000000000000000000000000000000000000000050c0100cec3f9df482b8de041a81dae22a494a3446966fcf1fab4afbf4fc00028e91424`

From Tangle to Sepolia ( EVM) (this currently works with SDK)

PHA deposits 

`0x09048400cec3f9df482b8de041a81dae22a494a3446966fcf1fab4afbf4fc00028e9142401fef655b6779eced20bd95ccd83adeedd77d3959495cdebf384b44cf98348954f89c85a208131705c1ce0bc98daed93b94e52d30e31239875a1bb247da286978c7502fc003105010300511f06057379676d6100000000000000000000000000000000000000000000000000000006037068610000000000000000000000000000000000000000000000000000000000000b0030ef7dba02000306057379676d61000000000000000000000000000000000000000000000000000000050806149a17fa0a2824ea855ec6ad3eab3aa2516ec6626d000000000000000000000000`

sygUSDC deposits 

`0x01048400cec3f9df482b8de041a81dae22a494a3446966fcf1fab4afbf4fc00028e91424013a688b63525c5d1600bda4cf3573c1d886f766794fa172be4d0d696cc19ef67a615de537fb7e37a6ffa55c63986f77b83c7414cb26580a3ef8c85df09beb8b8c55010101003105010300a10f06057379676d610000000000000000000000000000000000000000000000000000000606737967757364000000000000000000000000000000000000000000000000000000021bb700000306057379676d61000000000000000000000000000000000000000000000000000000050806149a17fa0a2824ea855ec6ad3eab3aa2516ec6626d000000000000000000000000`