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

Implement fungible EVM transfers #371

Closed MakMuftic closed 1 month ago

MakMuftic commented 4 months ago

Following the proposed v3 SDK restructure, implement/restructure the necessary functions for creating deposit EVM transactions for fungible assets (ERC20).

Implementation details

QA Details

Acceptance Criteria

MakMuftic commented 4 months ago

Hey team! Please add your planning poker estimate with Zenhub @Lykhoyda @mpetrunic @saadjhk @wainola

LyonSsS commented 1 month ago

QA Tests:

  1. EVM to EVM fungible with Percentage Fee Handler; RessID: 0x0000000000000000000000000000000000000000000000000000000000000300 Source: Sepolia 11155111 -> Destination: Cronos 338 : https://sepolia.etherscan.io/tx/0xbc9b66714ceebc33ef3fc08385e632a6bd35b363370999aee685e8a157107a2f
  2. EVM to EVM fungible with Base Fee Handler (fixed Fee); RessID: 0x0000000000000000000000000000000000000000000000000000000000000700 Source: Sepolia 11155111 -> Destination: Holesky 17000 : https://sepolia.etherscan.io/tx/0xad059afabaff97a12ca74af5d08122b1630347f47282749a4aaee4e7c9b9577d
  3. EVM to EVM fungible with TWAP Fee Handler (Dynamic Fee): NOT Yet avilable

sygUSDC "0x0000000000000000000000000000000000000000000000000000000000001100" NOT TESTED ERC20LRTest "0x00000000000000000000000000000000000000000000000000000000000003000" PASSED sygBTC "0x0000000000000000000000000000000000000000000000000000000000000700" PASSED

Source: DomID 2 - Sepolia - PASSED DomID 5 - Cronos - FAILED
`const error: any = new Error(message); ^

Error: transaction failed [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (transactionHash="0x8f720e89fef7aa0ef1d0de8add9ca56bc285cf0865a6edd16ed5319976bf0173", transaction={"type":2,"chainId":338,"nonce":36,"maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x59682f00"},"maxFeePerGas":{"type":"BigNumber","hex":"0x0918a7dacf00"},"gasPrice":null,"gasLimit":{"type":"BigNumber","hex":"0x0493e0"},"to":"0x816bb9E810b6b97840F6818bF21Fa25DD7364132","value":{"type":"BigNumber","hex":"0x00"},"data":"0x73c45c98000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000005400000000000000000000000000000000000000000000000029977e58d3250d0a00000000000000000000000000000000000000000000000000000000000000149a17fa0a2824ea855ec6ad3eab3aa2516ec6626d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000","accessList":[],"hash":"0x8f720e89fef7aa0ef1d0de8add9ca56bc285cf0865a6edd16ed5319976bf0173","v":0,"r":"0x8cc2708c71b1a6ffebcc16f412798706af0e884446d7a9581ebafbc78d62dabc","s":"0x6c1cca8906c6f51d8a5855d53facd4e36b9cad7701b1d3fa5849fb1e9e8eb113","from":"0x9A17FA0A2824EA855EC6aD3eAb3Aa2516EC6626d","confirmations":0}, receipt={"to":"0x816bb9E810b6b97840F6818bF21Fa25DD7364132","from":"0x9A17FA0A2824EA855EC6aD3eAb3Aa2516EC6626d","contractAddress":null,"transactionIndex":0,"gasUsed":{"type":"BigNumber","hex":"0x0249f0"},"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","blockHash":"0xb5fbedd8c444d25be6a66855a40f1ff8c3492540b0ae198568c2400b3d7c5de7","transactionHash":"0x8f720e89fef7aa0ef1d0de8add9ca56bc285cf0865a6edd16ed5319976bf0173","logs":[],"blockNumber":23513665,"confirmations":2,"cumulativeGasUsed":{"type":"BigNumber","hex":"0x0249f0"},"effectiveGasPrice":{"type":"BigNumber","hex":"0x048c80a17f00"},"status":0,"type":2,"byzantium":true}, code=CALL_EXCEPTION, version=providers/5.7.2) at Logger.Logger.makeError (/home/liviu/Sygma/SDK_V3/sygma-sdk/node_modules/@ethersproject/logger/src.ts/index.ts:269:28) at Logger.Logger.throwError (/home/liviu/Sygma/SDK_V3/sygma-sdk/node_modules/@ethersproject/logger/src.ts/index.ts:281:20) at Web3Provider. (/home/liviu/Sygma/SDK_V3/sygma-sdk/node_modules/@ethersproject/providers/src.ts/base-provider.ts:1549:24) at step (/home/liviu/Sygma/SDK_V3/sygma-sdk/node_modules/@ethersproject/providers/src.ts/base-provider.ts:1:14) at Object.next (/home/liviu/Sygma/SDK_V3/sygma-sdk/node_modules/@ethersproject/providers/src.ts/base-provider.ts:1:14) at fulfilled (/home/liviu/Sygma/SDK_V3/sygma-sdk/node_modules/@ethersproject/providers/src.ts/base-provider.ts:1:14) { reason: 'transaction failed', code: 'CALL_EXCEPTION', transactionHash: '0x8f720e89fef7aa0ef1d0de8add9ca56bc285cf0865a6edd16ed5319976bf0173', transaction: { type: 2, chainId: 338, nonce: 36, maxPriorityFeePerGas: BigNumber { _hex: '0x59682f00', _isBigNumber: true }, maxFeePerGas: BigNumber { _hex: '0x0918a7dacf00', _isBigNumber: true }, gasPrice: null, gasLimit: BigNumber { _hex: '0x0493e0', _isBigNumber: true }, to: '0x816bb9E810b6b97840F6818bF21Fa25DD7364132', value: BigNumber { _hex: '0x00', _isBigNumber: true }, data: '0x73c45c98000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000005400000000000000000000000000000000000000000000000029977e58d3250d0a00000000000000000000000000000000000000000000000000000000000000149a17fa0a2824ea855ec6ad3eab3aa2516ec6626d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000', accessList: [], hash: '0x8f720e89fef7aa0ef1d0de8add9ca56bc285cf0865a6edd16ed5319976bf0173', v: 0, r: '0x8cc2708c71b1a6ffebcc16f412798706af0e884446d7a9581ebafbc78d62dabc', s: '0x6c1cca8906c6f51d8a5855d53facd4e36b9cad7701b1d3fa5849fb1e9e8eb113', from: '0x9A17FA0A2824EA855EC6aD3eAb3Aa2516EC6626d', confirmations: 0, wait: [Function (anonymous)] }, receipt: { to: '0x816bb9E810b6b97840F6818bF21Fa25DD7364132', from: '0x9A17FA0A2824EA855EC6aD3eAb3Aa2516EC6626d', contractAddress: null, transactionIndex: 0, gasUsed: BigNumber { _hex: '0x0249f0', _isBigNumber: true }, logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', blockHash: '0xb5fbedd8c444d25be6a66855a40f1ff8c3492540b0ae198568c2400b3d7c5de7', transactionHash: '0x8f720e89fef7aa0ef1d0de8add9ca56bc285cf0865a6edd16ed5319976bf0173', logs: [], blockNumber: 23513665, confirmations: 2, cumulativeGasUsed: BigNumber { _hex: '0x0249f0', _isBigNumber: true }, effectiveGasPrice: BigNumber { _hex: '0x048c80a17f00', _isBigNumber: true }, status: 0, type: 2, byzantium: true } }` But works on old sdk https://scan.test.buildwithsygma.com/transfer/0xdf26000d16397dbe5aecaf4abfcc962eb5928ff459fbc641ace12a33065d7c32

LyonSsS commented 1 month ago

Tested in relationship with https://app.zenhub.com/workspaces/sygma-protocol-62f126a54b7d5a55203732f0/issues/gh/sygmaprotocol/project-backlog/253 Tests done: Implement fungible EVM transfers topic -> https://docs.google.com/spreadsheets/d/13SRvdjjrnSIjhD26eFG3xV0pcGsBtq9SV1Dc_lUkACM/edit?pli=1&gid=2049882071#gid=2049882071
QA ready