btp's People
Forkers
ilkereroglu bipesh bwhli bhaskardutta2209 biplavibriz sbnair nneessen rodrigoieh simsonraj sudoblockio sanglt1902 redlarva bbist bisbist mohamedelshami hir0min icondev22 dwdraju lucas-l andrii-kl staky-io jk-traders fidelve pinkdiamond1btp's Issues
Incompatibility issues between Docker-based testnet and public testnet
We have often used this guide to deploy a local testnet for development but last week when we switch to a public testnet for the first time then there were several incompatibility issues with block/tx structure. Is there anyway to keep Docker up to date with public testnet?
- Docker local testnet in above link.
- Public testnet: https://btp.net.solidwallet.io/api/v3 and https://rpc.testnet.moonbeam.network
Burn Protocol Fee on Java xCall and add getTotalIcxBurned API
@sink772 for the Java xCall service, protocol fee can be burned because it is ICX on the ICON Blockchain. Please update the logic when you get the chance.
Also, I think it would be nice to create getTotalIcxBurned API, which increases every time the Protocol Fee is burned. It will make it easy for statistics dashboards to track ICX burned over time.
Add support for Keccak256 to JavaScore Crypto and Context API
Keccak256 is required to verify the Etheruem block header in the JavaScore verifier contract.
This needs to be available in the Context API and relevant SDK implementation
https://github.com/icon-project/goloop/blob/master/javaee/api/src/java/score/Context.java
One BMR maliciously ignore BTP Message can cause all BMR other BMRs to stop
In the current implementation of BMR, BTP Messages are expected to always be the latest block. However, if one BMR decides to ignore a BTPMessage. The next BTP Message sent by any BMRs will receive E0032:BMVRevertInvalidSequenceHigher
Ref to ICON Foundation implementation https://github.com/icon-project/btp/blob/master/cmd/btpsimple/chain/chain.go#L212-L223
Ref to ICONDAO implementation https://github.com/icon-project/btp/blob/refactor-layout/btp/btp.go#L307-L322
Review and coordinate upgradability feature with ICONDAO
Update JavaScore BMV to use Keccak256
- Use Keccak256 for BMV and Merkle Proof implementation
- Test BMV against Etheruem (BSC) blockheader
golang net error of EOF when monitor PRA chain
During testing on testnets
I got these errors, which stops BMR
D|04:27:18.680143|1e9E|-|btp|btp.go:290 addRelayMessage bu.Height:3455490 b.bmcLinkStatus.Verifier.Height:3454226
D|04:27:18.680170|1e9E|-|btp|btp.go:327 addRelayMessage rms:3 bu:3455020 ~ 3455490
D|04:27:19.012345|1e9E|-|btp|btp.go:235 canRelay rms:3 has_wait:true skippable:false relayable:false
D|04:27:20.663190|1e9E|-|btp|btp.go:290 addRelayMessage bu.Height:3455491 b.bmcLinkStatus.Verifier.Height:3454226
D|04:27:20.663217|1e9E|-|btp|btp.go:327 addRelayMessage rms:3 bu:3455020 ~ 3455491
D|04:27:22.674657|1e9E|-|btp|btp.go:290 addRelayMessage bu.Height:3455492 b.bmcLinkStatus.Verifier.Height:3454226
Error: MonitorLoop parachain, got err: Post "https://rpc.testnet.moonbeam.network": EOF
MonitorLoop parachain, got err: Post "https://rpc.testnet.moonbeam.network": EOF
D|04:27:46.545850|2dbd|-|btp|btp.go:188 OnBlockOfDst height:3455504
D|04:27:48.504400|2dbd|-|btp|btp.go:188 OnBlockOfDst height:3455505
Error: ReceiveLoop parachain, got err
ReceiveLoop parachain, got err
github.com/icon-project/btp/common/errors.Wrap
/home/ubuntu/work/btp/common/errors/errors.go:193
github.com/icon-project/btp/chain/pra.(*Receiver).ReceiveLoop
/home/ubuntu/work/btp/chain/pra/receiver.go:214
github.com/icon-project/btp/btp.(*BTP).Serve.func2
/home/ubuntu/work/btp/btp/btp.go:150
runtime.goexit
/snap/go/8298/src/runtime/asm_amd64.s:1371
Wrapping Post "https://rpc.testnet.moonbeam.network": EOF
BMC Relay Sender & Receiver
- Round trip ICON -> Sender testing
- Use MockBMR with Sha3 FIPS pre-compiles
- Properly import Ethereum Wallet
- Externalise default configurations retries, timeout, etc..
BSC RPC Client Implementation
- Incorporated go-ethereum client (Binance Smart Chain)
- Implementation of key methods: SendTransaction, SendSignedTransaction, GetBlockHeader
Integrate SHA3-256 (SHA3 FIPS 202) Pre-compiles for Merkle proof / BMV verification.
- Add Pre-compiles to Solidity library
- Make it available for unit testing in Truffle (requires local node running)
Test
Does this populate in GitHub
Add Code Coverage Reporting with Codecov
To get the idea of test coverage of the repo, add github actions pipeline with following actions:
- Show coverage of the main branch
iconloop-v2
on README file - Add coverage reporting on PR and merge to the main branch
iconloop-v2
in comments section
Acala integration impidiment
Problem 1
To integrate BTP, a set of Relaychain and Parachain should provide the following JSON-RPC APIs:
- eth_call
- eth_chainId
- eth_estimateGas
- eth_gasPrice
- eth_getCode
- eth_getTransactionCount
- eth_getTransactionReceipt
- eth_sendRawTransaction
- chain_getBlock
- chain_getBlockHash
- grandpa_proveFinality
- state_getMetadata
- state_getReadProof
- state_getStorageAt
APIs in bolded text are missing in implementation of Acala network on Acala/Karura environment. They only have 2 JSON RPC methods to interact with EVM, which are evm_call and evm_estimateGas, and they can logically replace eth_call and eth_estimateGas, respectively. However, for BTP integration, these 2 JSON RPC methods are not enough. This is because Acala has their own implementation called Bodhi, instead of using Frontier implementation unlike Moonbeam. Compared to Frontier, Bodhi does not support standard Ethereum RPC and is not Web3 compatible.
You can check Karura (Acala network's Parachain on Kusama)'s API list by choosing 'rpc' in 'call the selected endpoint' dropdown and clicking 'Submit RPC call' in https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkarura-rpc-0.aca-api.network#/rpc
Problem 2
The second problem is that since Acala's implementation doesn't support evm.log event as a system event unlike Frontier, there is no way to prove the EVM event log contains BTP Message(s). As a result, the current BMV proof won’t work.
Problem 3
Also note that Acala isn't compatible with Truffle which we have used for development since day 1 according to Compatible Toolings. To run all existing tests on Acala environment, it's required to change the development environment from Truffle to Waffle and rewrite all tests. Technically, this is a time consuming task rather than a blocker.
Solution
Here are solutions sorted from easiest to hardest:
- Ask Acala team to support evm.Log event in EVM Pallet/Frame (The second problem) and missing APIs for BMR (The first problem)
- Rewrite BMC, BMV, BSH in !ink to natively support Relay chain and Parachain so that it can support Parachains supporting !ink whether they use Frontier or not. Note that not every Parachain supports !ink e.g. Moonbeam.
- As a runtime level solution, we could write a btp Pallet/FRAME module containing BMC, BMV, BSH aiming to every Parachain. In this case, Parachains don't even need to provide precompiles like sha3-256.
cc @trmaphi
BSH Java SCORE
- Confirm BEP20 and ERC20 are compatible
- Deploy BEP20 Token to BSC local chain
- Implementation of BSH
- Implementation of Token Transfer Service
- Complete test scenarios
- Add FA Aggregation contract
JavaScore Fee Aggregation Contract
Solidity BSC BMV
- Implement Solidity BTP Message Verifier
- Implement Solidity MPT and MTA
- LRP Solidity encoder / decoder (leverage ICONDAO implementation)
- LRP Solidity BSC <> ICON roundtrip testing.
- Integrate with BMR.
Deployment scripts should log all contracts and transactions
For example, I see tx.registerCoin.icon
and tx.registerRelay.icon
for ICON but none of them for Moonbeam. These output might be needed to configure other apps or testing.
PythonSCORE BMC can't be deployed on goloop version v0.9.6
The current build on icon branch is exactly the same with master. However, I can't deploy them with docker image iconloop/goloop-icon:v0.9.6
.
I did try again on sejong testnet, but it didn't work.
# Estimate step limit failed
goloop rpc --debug --uri https://sejong.net.solidwallet.io/api/v3 \
sendtx deploy build/pyscore/bmc.zip \
--key_store .keystore/sejong.json \
--key_password sejong \
--nid 0x53 \
--step_limit 13610920001 \
--content_type application/zip\
--param _net="0x53.icon" --estimate
Error: jsonrpc: code: -30005, message: E0005:IllegalFormat, data: E0005:IllegalFormat
github.com/icon-project/goloop/common/errors.Errorc
/work/common/errors/errors.go:177
github.com/icon-project/goloop/common/errors.Code.New
/work/common/errors/errors.go:66
github.com/icon-project/goloop/service/eeproxy.(*proxy).HandleMessage
/work/service/eeproxy/proxy.go:472
github.com/icon-project/goloop/common/ipc.(*connection).HandleMessage
/work/common/ipc/connection.go:127
github.com/icon-project/goloop/common/ipc.(*server).handleConnection
/work/common/ipc/server.go:79
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1373
# Execute real transaction on testnet
goloop rpc --debug --uri https://sejong.net.solidwallet.io/api/v3 \
sendtx deploy build/pyscore/bmc.zip \
--key_store .keystore/sejong.json \
--key_password sejong \
--nid 0x53 \
--step_limit 13610920001 \
--content_type application/zip\
--param _net="0x53.icon"
# Result
# "0xc5d81d1b0a6abf82f5c2148d8d37c8715763fd5665eaabb4d2a3257f2a4b9352"
# https://sejong.tracker.solidwallet.io/transaction/0xc5d81d1b0a6abf82f5c2148d8d37c8715763fd5665eaabb4d2a3257f2a4b9352
Error during deploying which causes Moonbeam exited
An error during deploying, it makes g2m_btp_moonbeam stops. But they were working fine when I restarted all containers after that.
Deployment guide used: https://github.com/icon-project/btp/tree/icondao/docker-compose/goloop2moonbeam
g2m_btp_moonbeam | D|04:12:54.536999|b6b5|-|btp|btp.go:235 canRelay rms:2 has_wait:true skippable:true relayable:false
g2m_btp_moonbeam | P|04:12:56.915627|b6b5|-|btp|btp.go:447 fail to GetResult GetResultParam:&{0x58f5a99b7fb079ac16c36c68c04d4ac0091d1566ad4021d05832e7699829c7c7} err:fail to getresult by pending
g2m_btp_moonbeam | panic: (*logrus.Entry) 0xc0001a5dc0
g2m_btp_moonbeam |
g2m_btp_moonbeam | goroutine 158 [running]:
g2m_btp_moonbeam | github.com/sirupsen/logrus.Entry.log(0xc0001a5f80, 0xc000121140, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
g2m_btp_moonbeam | /home/ubuntu/work/pkg/mod/github.com/sirupsen/[email protected]/entry.go:259 +0x345
g2m_btp_moonbeam | github.com/sirupsen/logrus.(*Entry).Log(0xc000196070, 0x0, 0xc004ae3e70, 0x1, 0x1)
g2m_btp_moonbeam | /home/ubuntu/work/pkg/mod/github.com/sirupsen/[email protected]/entry.go:287 +0xf0
g2m_btp_moonbeam | github.com/sirupsen/logrus.(*Entry).Logf(0xc000196070, 0xc000000000, 0xf9f12d, 0x2b, 0xc000aec6e0, 0x2, 0x2)
g2m_btp_moonbeam | /home/ubuntu/work/pkg/mod/github.com/sirupsen/[email protected]/entry.go:333 +0xe5
g2m_btp_moonbeam | github.com/sirupsen/logrus.(*Entry).Panicf(0xc000196070, 0xf9f12d, 0x2b, 0xc000aec6e0, 0x2, 0x2)
g2m_btp_moonbeam | /home/ubuntu/work/pkg/mod/github.com/sirupsen/[email protected]/entry.go:371 +0x65
g2m_btp_moonbeam | github.com/icon-project/btp/btp.(*BTP).updateResult.func1()
g2m_btp_moonbeam | /home/ubuntu/testnet/btp/btp/btp.go:447 +0x752
g2m_btp_moonbeam | github.com/gammazero/workerpool.startWorker(0xc005576930, 0xc0009e61e0)
g2m_btp_moonbeam | /home/ubuntu/work/pkg/mod/github.com/gammazero/[email protected]/workerpool.go:233 +0x27
g2m_btp_moonbeam | created by github.com/gammazero/workerpool.(*WorkerPool).dispatch
g2m_btp_moonbeam | /home/ubuntu/work/pkg/mod/github.com/gammazero/[email protected]/workerpool.go:195 +0x2f8
g2m_btp_icon | D|04:12:57.028309|3Cd0|-|btp|btp.go:188 OnBlockOfDst height:235
g2m_btp_moonbeam exited with code 2
Getting error on bringing up moonbeam
I'm using Docker on Mac M1
I'm following the instructions here: https://icondev.io/btp-gitbook/btp-development-instructions
The final step is to bring up the moonbeam node:
docker-compose up moonbeam
This results in an error:
$ docker compose up moonbeam
[+] Building 1.0s (8/8) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/purestake/moonbeam:v0.13.2-upgrade-hotfix 0.8s
=> [internal] load metadata for docker.io/library/debian:buster-slim 0.7s
=> CACHED [stage-1 1/3] FROM docker.io/purestake/moonbeam:v0.13.2-upgrade-hotfix@sha256:9718c43b402 0.0s
=> CACHED [base 1/1] FROM docker.io/library/debian:buster-slim@sha256:f6e5cbc7eaaa232ae1db675d83eab 0.0s
=> [stage-1 2/3] COPY --from=base /usr/bin /usr/bin 0.0s
=> ERROR [stage-1 3/3] RUN apt-get update && apt-get install -y curl 0.2s
------
> [stage-1 3/3] RUN apt-get update && apt-get install -y curl:
#8 0.148 /bin/sh: 1: apt-get: not found
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c apt-get update && apt-get install -y curl]: exit code: 127
test
Docker based deployment fails with provision.sh error
Failed to deploy docker based testnet.
- Pull latest code (here)
make run
causes below error. It seemsprovision.sh
doesn't work correctly. Script keeps showing this log.
g2m_btp_moonbeam | waiting for an other BTP to finish provisioning settings...
g2m_btp_icon | 2021-10-29 09:17:42 API/INIT: RPC methods not decorated: debug_traceBlockByHash, debug_traceBlockByNumber, debug_traceTransaction
g2m_btp_icon | 2021-10-29 09:17:42 METADATA: Unknown types found, no types for AssetRegistrarMetadata, AssetType, AuthorId, BlockV0, Collator2, CollatorSnapshot, CurrencyId, ExitQ, InflationInfo, Nominator2, NominatorAdded, OrderedSet, ParachainBondConfig, RegistrationInfo, RelayChainAccountId, RewardInfo, RoundInfo, VestingBlockNumber
g2m_btp_icon | relay genesis hash: 0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe
g2m_btp_icon | relay chain name: "Kusama"
g2m_btp_icon | para genesis hash: 0xde0ba5802ad6fc3758e5d18ba847c910ab94702359a76de94b18940de486d33a
g2m_btp_icon | para chain name: "Moonbase Development Testnet"
g2m_btp_icon | Get metadata of relay chain...
g2m_btp_moonbeam | waiting for an other BTP to finish provisioning settings...
g2m_btp_icon | Get metadata of para chain...
g2m_btp_moonbeam | waiting for an other BTP to finish provisioning settings...
g2m_btp_icon | Done in 28.68s.
g2m_btp_icon | parachain height:0x41 block_hash:0xb9ee93e624dacd599df0ac8bc19bec3da2a3ab818bc63158e6df854aae54f23c
g2m_btp_icon | "0x9ee2c58efe222364b8a761050a90ccfef185d3f3f4d2fdf33941ed67ee8da26a"
g2m_btp_icon | /entrypoint.sh: /btpsimple/scripts/provision.sh: line 97: --param: not found
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_moonbeam | waiting for an other BTP to finish provisioning settings...
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
g2m_btp_moonbeam | waiting for an other BTP to finish provisioning settings...
g2m_btp_icon | Usage: goloop rpc txresult HASH [flags]
g2m_btp_icon | Error: accepts 1 arg(s), received 0
BSH & IRC2 test cases with FA integration
- Unit test cases for BSH
- Unit test cases for FA Integration
- Integration Tests for BSH
- Integration Tests for FA Integration
SHA3-256 FIPS 202 and ECDSA Recovery Uncompressed public key Precompiles for NEAR Protocol
Description
As part of BTP, The chains should implement SHA3-256 FIPS 202 and ECDSA Recovery Uncompressed public key for the smart contracts participating in the Network and NEAR protocol does not have the required implementation.
Suggestion
Add SHA3-256 FIPS 202 and ECDSA Recovery Uncompressed public key precompiles implementation to NEAR VM.
Progress
- Implement precompile for SHA3-256 FIPS 202
- Implement precompile for ECDSA Recovery Uncompressed public key
- Implement interface in
near-sdk
- Testing
- Raise PR to include to
nearcore
Unit testing Instructions
- Clone https://github.com/HugoByte/nearcore
- Checkout
feature/protocol-feature-btp-precompile
branch - Run
cargo test --package="near-vm-logic" --all-features
Fee Aggregation Logic implementation in tokenBSH
- Implement Fee collection Logic in ERC20 tokenBSH
- Implement GatherFee Logic in ERC20 tokenBSH
- Test cases for FA logic in ERC20 TokenBSH
- Integrate BMC mock with BSH & modify test cases to test flow
- Implement Fee collection Logic in IRC2 tokenBSH
Fails on Python SCORE when receive RelayMessage
The latest version of Python SCORE fails on receiving RelayMessage.
Command ran:
make btpsimple-image
docker-compose -f docker-compose/docker-compose.yml up --build -d
oloop_1 | I|20210526-03:52:08.720426|2cd7|d782a4|SV|transactionpool.go:214 TransactionPool.Candidate collected=1 removed=0 poolsize=1 duration=167.771µs
goloop_1 | D|20210526-03:52:08.720751|2cd7|d782a4|SV|transition.go:365 reportValidation(err=<nil>)
goloop_1 | D|20210526-03:52:08.721151|2cd7|d782a4|SV|transition.go:498 Transition.doExecute: height=48 csi=ConsensusInfo(proposer=hx2cd7ac701ef6443e9c964ad3af04043fa425cf84,voters=validatorList[[Validator[addr=hx2cd7ac701ef6443e9c964ad3af04043fa425cf84,pkey=<>]]],voted=[true])
goloop_1 | W|20210526-03:52:08.721353|2cd7|c7cb24|SV|90a4941d|log.go:205 python|cxc612c005|service_engine.py:149 [SystemError] NameError("name 'sha3_256' is not defined")
goloop_1 | Traceback (most recent call last):
goloop_1 | File "/goloop/venv/lib/python3.7/site-packages/pyexec/service_engine.py", line 93, in _handle_invoke
goloop_1 | ret = cls._internal_call(context)
goloop_1 | File "/goloop/venv/lib/python3.7/site-packages/pyexec/service_engine.py", line 127, in _internal_call
goloop_1 | return score_func(func_name=func_name, arg_params=arg_params, kw_params=kw_params)
goloop_1 | File "/goloop/venv/lib/python3.7/site-packages/pyexec/iconscore/icon_score_base.py", line 458, in __call
goloop_1 | ret = score_func(*arg_params, **kw_params)
goloop_1 | File "/goloop/venv/lib/python3.7/site-packages/pyexec/iconscore/icon_score_base.py", line 275, in __wrapper
goloop_1 | res = func(calling_obj, *args, **kwargs)
goloop_1 | File "/goloop/data/goloop/d782a4/contract/0xafabf5a4146e396d5d365dcf98d5e1ad407d5083f68b40d231bbd7bd42de2522/bmv/icon/icon.py", line 187, in handleRelayMessage
goloop_1 | receipt_hash, last_height = self._last_receipt_hash(relay_msg)
goloop_1 | File "/goloop/data/goloop/d782a4/contract/0xafabf5a4146e396d5d365dcf98d5e1ad407d5083f68b40d231bbd7bd42de2522/bmv/icon/icon.py", line 106, in _last_receipt_hash
goloop_1 | self._props.mta.add(block_update.block_header.hash)
goloop_1 | File "/goloop/data/goloop/d782a4/contract/0xafabf5a4146e396d5d365dcf98d5e1ad407d5083f68b40d231bbd7bd42de2522/lib/icon/mta.py", line 149, in add
goloop_1 | _hash = sha3_256(self.__roots[idx] + _hash)
goloop_1 | NameError: name 'sha3_256' is not defined
goloop_1 | D|20210526-03:52:08.721888|2cd7|c7cb24|SV|90a4941d|log.go:205 python|cx53a75dd8|service_engine.py:144 [SystemException] name 'sha3_256' is not defined
goloop_1 | I|20210526-03:52:08.722058|2cd7|c7cb24|SV|transition.go:549 Transactions: 1 Elapsed: 38.379 ms PerTx: 38379.0 µs TPS: 26.06
Add getTotalMessages API to BMC
I would like to add a getTotalMessages API to BMC logic of all BMCs. When a new message is created on a source chain, the source chain BMC should increase totalMessages by 1. This will make it easy for statistics dashboards to track BTP data.
BSC Sender and BlockUpdate Relay Monitor
- Block updates monitor
- Sender Loop
- Compose Test BMC BTP Message in BSC Chain
BTP Standard: Other Network <> Other Network Direct Communication
We must find a scalable standard to allow non-ICON networks to communicate directly with each other. Here is one initial plan to get the discussion going:
All BTP messages from Other Networks arrive to the ICON BMC, then ICON BMC can emit events for BMR to relay message to correct destination chain. This way, each Other Network only needs one BMV, but ICON Network will have BMV of all connected networks. But from a User Experience point, it is still Other Network <> Other Network directly.
Example:
Bob’s goal -> Send 1 ACALA token from Acala network to Binance Smart Chain
1.) Bob sends 1 ACALA token to acala_BSH
2.) acala_BSH creates this btpMessage (src: ACALA, dst: BSC, svc: tokenTransfer, sn: 1, msg: Bytes)
3.) btpMessage is sent to acala_BMC
4.) BMR reads event from acala_BMC
5.) BMR sends btpMessage to icon_BMC
6.) icon_BMV verifies btpMessage data
7.) icon_BMC emits an event of verified btpMessage
8.) BMR reads event from icon_BMC
9.) BMR sends btpMessage to bsc_BMC (this is because dst = BSC)
10.) bsc_BMC sends the btpMessage to bsc_BMV
11.) bsc_BMV verifies btpMessage
12.) bsc_BMC sends message proof to bsc_BSH
13. bsc_BSH mints 1 ACALA token
Deployment scripts should generate all contract ABIs
I saw only 2 under deployment's ./config
and I needed BSHPeriphery ABI which wasn't there. Then I needed to go into a docker container, there wasn't build
folder too :O (/contracts/solidity/bsh/build/contracts) so I had to yarn install and build them myself.
Ref: https://github.com/icon-project/btp/tree/icondao/docker-compose/goloop2moonbeam
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.