Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(protocol): major protocol upgrade for alpha-3 testnet #13640

Merged
merged 38 commits into from
May 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
0b2c9ae
feat(protocol): major protocol upgrade (#13389)
dantaik Apr 23, 2023
642858f
Merge branch 'main' into major_protocol_upgrade_alpha3
cyberhorsey Apr 23, 2023
e40a852
test(protocol): Add foundry tests for TaikoToken (#13641)
adaki2004 Apr 24, 2023
5ee7788
do some cleanup
dantaik Apr 24, 2023
8eb9f1a
test(protocol): More tests and remove redundant revert statement (#13…
adaki2004 Apr 24, 2023
572153b
do some cleanup
dantaik Apr 24, 2023
ee8e875
feat(protocol): eventindexer/relayer/status-page/bridge-ui caught up …
cyberhorsey Apr 24, 2023
38497a5
feat(protocol): update `ANCHOR_GAS_COST` (#13645)
davidtaikocha Apr 25, 2023
8ebd2ce
fix(protocol): Rm unused config (#13644)
cyberhorsey Apr 25, 2023
a1fc8b1
refactor(protocol): additional cleaning up (#13646)
dantaik Apr 25, 2023
f338783
oracle prover bug
cyberhorsey Apr 25, 2023
848fa36
Revert "oracle prover bug"
dantaik Apr 26, 2023
bd800a3
fix oracle proving bug
dantaik Apr 26, 2023
eee153c
feat(protocol): Remove non-working FoundryRandom and implement a cust…
adaki2004 Apr 26, 2023
89439bb
test(protocol): fix unit test naming issue (all unit tests must use *…
dantaik Apr 26, 2023
57f06cb
fix(bridge-ui): fix claim eth message processed (#13656)
jscriptcoder Apr 26, 2023
81614b1
feat(status-page): ETH Deposit info (#13658)
cyberhorsey Apr 27, 2023
b21dff9
refactor(protocol): optimize address manager impl (#13668)
dantaik Apr 27, 2023
bec7e4b
Merge branch 'main' into major_protocol_upgrade_alpha3
dantaik Apr 27, 2023
779cf80
Update TaikoConfig.sol
dantaik Apr 27, 2023
dddb448
fix(protocol): fix contract names in `DeployOnL1` script output (#13670)
davidtaikocha Apr 27, 2023
7bf8e01
feat(protocol): need one real ZKP every N blocks (#13673)
dantaik Apr 28, 2023
20a0926
fix: use msg.sender instead of address(1) for special proofs
dantaik Apr 28, 2023
7ac3848
fix: use oracleProver instead of address(1) for special proofs
dantaik Apr 28, 2023
e907c79
feat(protocol): ensure non-zero 1559 basefee (#13672)
dantaik Apr 29, 2023
7dfce0f
feat(protocol): simulate protocol and tokenomics (#13657)
adaki2004 Apr 29, 2023
1b84a70
Merge branch 'main' into major_protocol_upgrade_alpha3
d1onys1us May 1, 2023
8570806
Update packages/protocol/test/Taiko1559Params.t.sol
dantaik May 2, 2023
0b557e2
Merge branch 'main' into major_protocol_upgrade_alpha3
davidtaikocha May 2, 2023
76a43d3
fix(repo): replace xchainsync to valid capwords style and choose clar…
d1onys1us May 2, 2023
9636c64
Update packages/protocol/contracts/L1/TaikoL1.sol
dantaik May 3, 2023
1fe7078
Update packages/protocol/contracts/L1/libs/LibProving.sol
dantaik May 3, 2023
758a162
Update packages/protocol/contracts/L1/libs/LibTokenomics.sol
dantaik May 3, 2023
fb877ed
Update packages/protocol/contracts/L2/TaikoL2.sol
dantaik May 3, 2023
3b1fd49
Update packages/protocol/contracts/L1/TaikoL1.sol
dantaik May 3, 2023
029ba8c
feat(protocol): prevent oracle prover overriding the same proof (#13681)
dantaik May 3, 2023
bd203f3
Update packages/protocol/contracts/L1/libs/LibTokenomics.sol
dantaik May 3, 2023
f8c1797
cleanup
dantaik May 3, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 25 additions & 26 deletions .github/workflows/protocol.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,47 +20,46 @@ jobs:

- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: recursive

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1

- name: Install pnpm dependencies
uses: ./.github/actions/install-pnpm-dependencies

- name: protocol - Unit Tests
working-directory: ./packages/protocol
run: pnpm clean && pnpm test

- name: protocol - Integration Tests
working-directory: ./packages/protocol
run: pnpm test:integration

- name: protocol - Tokenomics Tests
working-directory: ./packages/protocol
run: pnpm test:tokenomics

- name: protocol - Bridge Tests
working-directory: ./packages/protocol
run: pnpm test:bridge

- name: protocol - Test Coverage
working-directory: ./packages/protocol
run: pnpm test:coverage
run: pnpm clean && pnpm compile:hardhat && pnpm test

- name: protocol - Generate Genesis
working-directory: ./packages/protocol
run: pnpm test:genesis

- name: protocol - Export ABIs
# TODO: CompilerError: Stack too deep
# - name: protocol - Test Coverage
# working-directory: ./packages/protocol
# run: pnpm test:coverage

- name: protocol - Run snapshot (foundry)
working-directory: ./packages/protocol
run: pnpm export:abi
run: pnpm snapshot

- name: protocol - Deploy L1 Contracts
working-directory: ./packages/protocol
run: pnpm deploy:hardhat

- name: protocol - Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: ./packages/protocol/coverage
flags: protocol
run: |
anvil &
while ! nc -z localhost 8545; do
sleep 1
done
pnpm deploy:foundry

# - name: protocol - Upload coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# directory: ./packages/protocol/coverage
# flags: protocol

post-merge:
if: github.event.pull_request.merged == true
Expand Down
16 changes: 16 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[submodule "packages/protocol/lib/solmate"]
path = packages/protocol/lib/solmate
url = https://github.com/rari-capital/solmate
branch = v1.5.0
[submodule "packages/protocol/lib/openzeppelin-contracts-upgradeable"]
path = packages/protocol/lib/openzeppelin-contracts-upgradeable
url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable
branch = v4.8.2
[submodule "packages/protocol/lib/openzeppelin-contracts"]
path = packages/protocol/lib/openzeppelin-contracts
url = https://github.com/OpenZeppelin/openzeppelin-contracts
branch = v4.8.2
[submodule "packages/protocol/lib/forge-std"]
path = packages/protocol/lib/forge-std
url = https://github.com/foundry-rs/forge-std
branch = chore/v1.5.1
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
[![Twitter Follow](https://img.shields.io/twitter/follow/taikoxyz?style=social)](https://twitter.com/taikoxyz)
[![Discord](https://img.shields.io/discord/984015101017346058?color=%235865F2&label=Discord&logo=discord&logoColor=%23fff)](https://discord.gg/taikoxyz)
[![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/taikoxyz/taiko-mono/badge)](https://www.gitpoap.io/gh/taikoxyz/taiko-mono)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/taikoxyz/taiko-mono/protocol.yml?branch=main&label=Protocol&logo=github)](https://github.com/taikoxyz/taiko-mono/actions/workflows/protocol.yml)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/taikoxyz/taiko-mono/relayer.yml?branch=main&label=Relayer&logo=github)](https://github.com/taikoxyz/taiko-mono/actions/workflows/relayer.yml)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/taikoxyz/taiko-mono/bridge-ui.yml?branch=main&label=Bridge%20UI&logo=github)](https://github.com/taikoxyz/taiko-mono/actions/workflows/bridge-ui.yml)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/taikoxyz/taiko-mono/website.yml?branch=main&label=Website&logo=github)](https://github.com/taikoxyz/taiko-mono/actions/workflows/website.yml)
[![License](https://img.shields.io/github/license/taikoxyz/taiko-mono)](https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md)

</div>
Expand All @@ -41,7 +45,6 @@ taiko-mono/
│ ├── <a href="./packages/relayer">relayer</a>: Bridge backend relayer in Go
│ ├── <a href="./packages/starter-dapp">starter-dapp</a>: Template for Taiko dapps
│ ├── <a href="./packages/status-page">status-page</a>: Taiko protocol status page
│ ├── <a href="./packages/tokenomics">tokenomics</a>: Taiko tokenomics simulations
│ ├── <a href="./packages/website">website</a>: Main documentation website at taiko.xyz (https://taiko.xyz/)
│ └── <a href="./packages/whitepaper">whitepaper</a>: Whitepaper source files with automated publishing
...
Expand Down
16 changes: 7 additions & 9 deletions packages/bridge-ui/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,18 @@

## [0.3.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v0.2.0...bridge-ui-v0.3.0) (2023-03-15)


### Features

* **bridge-ui:** custom recipient address ([#13309](https://github.com/taikoxyz/taiko-mono/issues/13309)) ([56d8848](https://github.com/taikoxyz/taiko-mono/commit/56d884812b3f12a52895bc666cb25e6edbe6eba0))
* **bridge-ui:** fetch transactions from relayer api ([#13244](https://github.com/taikoxyz/taiko-mono/issues/13244)) ([9732cc0](https://github.com/taikoxyz/taiko-mono/commit/9732cc084ed99196a4cd2ccedf9187af4d289ed6))
* **bridge-ui:** support both bull and horse tokens on the bridge UI ([#13249](https://github.com/taikoxyz/taiko-mono/issues/13249)) ([f9f38bb](https://github.com/taikoxyz/taiko-mono/commit/f9f38bb075c02c7976e0d04c84e4b8b5ac255644))
* **bridge-ui:** support route param to directly open transactions tab ([#13281](https://github.com/taikoxyz/taiko-mono/issues/13281)) ([b4c31cd](https://github.com/taikoxyz/taiko-mono/commit/b4c31cd8566b834cbf83a434c705fb281d375d12))

- **bridge-ui:** custom recipient address ([#13309](https://github.com/taikoxyz/taiko-mono/issues/13309)) ([56d8848](https://github.com/taikoxyz/taiko-mono/commit/56d884812b3f12a52895bc666cb25e6edbe6eba0))
- **bridge-ui:** fetch transactions from relayer api ([#13244](https://github.com/taikoxyz/taiko-mono/issues/13244)) ([9732cc0](https://github.com/taikoxyz/taiko-mono/commit/9732cc084ed99196a4cd2ccedf9187af4d289ed6))
- **bridge-ui:** support both bull and horse tokens on the bridge UI ([#13249](https://github.com/taikoxyz/taiko-mono/issues/13249)) ([f9f38bb](https://github.com/taikoxyz/taiko-mono/commit/f9f38bb075c02c7976e0d04c84e4b8b5ac255644))
- **bridge-ui:** support route param to directly open transactions tab ([#13281](https://github.com/taikoxyz/taiko-mono/issues/13281)) ([b4c31cd](https://github.com/taikoxyz/taiko-mono/commit/b4c31cd8566b834cbf83a434c705fb281d375d12))

### Bug Fixes

* **bridge-ui:** minor transactions list fix ([#13266](https://github.com/taikoxyz/taiko-mono/issues/13266)) ([4e78865](https://github.com/taikoxyz/taiko-mono/commit/4e788655ebd508eca3e1665ecb50f3010d2f51af))
* **bridge-ui:** transaction and pendingTransaction refactor ([#13307](https://github.com/taikoxyz/taiko-mono/issues/13307)) ([9d215cf](https://github.com/taikoxyz/taiko-mono/commit/9d215cfe5ac6863405390444672a1e70e7501032))
* **website,bridge-ui:** broken docs link + remove deprecated note in docs ([#13259](https://github.com/taikoxyz/taiko-mono/issues/13259)) ([912c155](https://github.com/taikoxyz/taiko-mono/commit/912c15595d7b0e3e2b4ec62fbcebeaf9dbc9db66))
- **bridge-ui:** minor transactions list fix ([#13266](https://github.com/taikoxyz/taiko-mono/issues/13266)) ([4e78865](https://github.com/taikoxyz/taiko-mono/commit/4e788655ebd508eca3e1665ecb50f3010d2f51af))
- **bridge-ui:** transaction and pendingTransaction refactor ([#13307](https://github.com/taikoxyz/taiko-mono/issues/13307)) ([9d215cf](https://github.com/taikoxyz/taiko-mono/commit/9d215cfe5ac6863405390444672a1e70e7501032))
- **website,bridge-ui:** broken docs link + remove deprecated note in docs ([#13259](https://github.com/taikoxyz/taiko-mono/issues/13259)) ([912c155](https://github.com/taikoxyz/taiko-mono/commit/912c15595d7b0e3e2b4ec62fbcebeaf9dbc9db66))

## [0.2.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v0.1.2...bridge-ui-v0.2.0) (2023-03-01)

Expand Down
1 change: 1 addition & 0 deletions packages/bridge-ui/src/bridge/ERC20Bridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ export class ERC20Bridge implements Bridge {
messageStatus === MessageStatus.Done ||
messageStatus === MessageStatus.Failed
) {
// TODO: should be throw a different error when status is Failed?
throw Error('message already processed');
}

Expand Down
6 changes: 6 additions & 0 deletions packages/bridge-ui/src/bridge/ETHBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,12 +104,18 @@ export class ETHBridge implements Bridge {
throw Error('message already processed');
}

if (messageStatus === MessageStatus.Failed) {
throw Error('user can not process this, message has failed');
}

const signerAddress = await opts.signer.getAddress();

if (opts.message.owner.toLowerCase() !== signerAddress.toLowerCase()) {
throw Error('user can not process this, it is not their message');
}

// TODO: up to here we share same logic as ERC20Bridge

if (messageStatus === MessageStatus.New) {
const proofOpts = {
srcChain: opts.message.srcChainId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import { LottiePlayer } from '@lottiefiles/svelte-lottie-player';
import { errorToast, successToast } from '../Toast.svelte';
import HeaderSyncABI from '../../constants/abi/HeaderSync';
import HeaderSyncABI from '../../constants/abi/ICrossChainSync';
import BridgeABI from '../../constants/abi/Bridge';
import ButtonWithTooltip from '../ButtonWithTooltip.svelte';
import TokenVaultABI from '../../constants/abi/TokenVault';
Expand Down Expand Up @@ -180,7 +180,7 @@
providers[chains[transaction.toChainId].id],
);

const latestSyncedHeader = await contract.getLatestSyncedHeader();
const latestSyncedHeader = await contract.getCrossChainBlockHash(0);
const srcBlock = await providers[
chains[transaction.fromChainId].id
].getBlock(latestSyncedHeader);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,28 @@ export default [
{
indexed: false,
internalType: 'bytes32',
name: 'srcHash',
name: 'blockHash',
type: 'bytes32',
},
{
indexed: false,
internalType: 'bytes32',
name: 'signalRoot',
type: 'bytes32',
},
],
name: 'HeaderSynced',
name: 'CrossChainSynced',
type: 'event',
},
{
inputs: [],
name: 'getLatestSyncedHeader',
inputs: [
{
internalType: 'uint256',
name: 'number',
type: 'uint256',
},
],
name: 'getCrossChainBlockHash',
outputs: [
{
internalType: 'bytes32',
Expand All @@ -39,7 +51,7 @@ export default [
type: 'uint256',
},
],
name: 'getSyncedHeader',
name: 'getCrossChainSignalRoot',
outputs: [
{
internalType: 'bytes32',
Expand Down
8 changes: 3 additions & 5 deletions packages/bridge-ui/src/proof/ProofService.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const mockProvider = {
};

const mockContract = {
getLatestSyncedHeader: jest.fn(),
getCrossChainBlockHash: jest.fn(),
};

jest.mock('ethers', () => ({
Expand Down Expand Up @@ -105,11 +105,9 @@ const invalidStorageProof2: EthGetProofResponse = {
};

const expectedProof =
'0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000380a7881266ca0a344c43cb24175d9dbd243b58d45d6ae6ad71310a273a3d1d3afb1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347000000000000000000000000ea674fdde714fd979de3edf0f56aa9716b898ec8c0dcf937b3f6136dd70a1ad11cc57b040fd410f3c49a5146f20c732895a3cc217273ade6b6ed865a9975ac281da23b90b141a8b607d874d2cd95e65e81336f8e74bb61e381e9238a08b169580f3cbf9b8b79d7d5ee708d3e286103eb291dfd0800000000000400000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000020000000000000000000000000000000000000000000000000100000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000000000000000000000000000000000000300f5ba25df1e92e89a09e0b32063b81795f631100801158f5fa733f2ba26843bd0000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001265746865726d696e652d75732d7765737431000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022e1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';

'0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000380a7881266ca0a344c43cb24175d9dbd243b58d45d6ae6ad71310a273a3d1d3afb1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347000000000000000000000000ea674fdde714fd979de3edf0f56aa9716b898ec8c0dcf937b3f6136dd70a1ad11cc57b040fd410f3c49a5146f20c732895a3cc217273ade6b6ed865a9975ac281da23b90b141a8b607d874d2cd95e65e81336f8e74bb61e381e9238a08b169580f3cbf9b8b79d7d5ee708d3e286103eb291dfd0800000000000400000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000020000000000000000000000000000000000000000000000000100000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000000000000000000000000000000000000300f5ba25df1e92e89a09e0b32063b81795f631100801158f5fa733f2ba26843bd0000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001265746865726d696e652d75732d776573743100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022e1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
const expectedProofWithBaseFee =
'0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000380a7881266ca0a344c43cb24175d9dbd243b58d45d6ae6ad71310a273a3d1d3afb1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347000000000000000000000000ea674fdde714fd979de3edf0f56aa9716b898ec8c0dcf937b3f6136dd70a1ad11cc57b040fd410f3c49a5146f20c732895a3cc217273ade6b6ed865a9975ac281da23b90b141a8b607d874d2cd95e65e81336f8e74bb61e381e9238a08b169580f3cbf9b8b79d7d5ee708d3e286103eb291dfd0800000000000400000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000020000000000000000000000000000000000000000000000000100000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000000000000000000000000000000000000300f5ba25df1e92e89a09e0b32063b81795f631100801158f5fa733f2ba26843bd0000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001265746865726d696e652d75732d7765737431000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022e1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';

'0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000380a7881266ca0a344c43cb24175d9dbd243b58d45d6ae6ad71310a273a3d1d3afb1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347000000000000000000000000ea674fdde714fd979de3edf0f56aa9716b898ec8c0dcf937b3f6136dd70a1ad11cc57b040fd410f3c49a5146f20c732895a3cc217273ade6b6ed865a9975ac281da23b90b141a8b607d874d2cd95e65e81336f8e74bb61e381e9238a08b169580f3cbf9b8b79d7d5ee708d3e286103eb291dfd0800000000000400000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000020000000000000000000000000000000000000000000000000100000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000000000000000000000000000000000000300f5ba25df1e92e89a09e0b32063b81795f631100801158f5fa733f2ba26843bd0000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001265746865726d696e652d75732d776573743100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022e1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
const srcChain = 167001;
const destChain = 31336;

Expand Down
Loading