Info

Download ZIP (974.8 KB)

Testing and Issues

You can test this entry and submit issues during the testing period of the TON Trustless Bridge Challenge contest.

Entries with serious issues will not be able to win the contest, but even minor issues might be important for overall results.

Voting

25

Comments

Greetings from Tessellator Research team! We present a complete, trustless and permissionless bridge between Fastnet and Testnet networks.


All requested functionality is implemented:
- Lite-client smart contract with fully functional 'new_key_block' and 'check_block' message handling.

- Transaction-checker smart contract that handles 'check_transaction' and responds with 'transaction_checked' message.

- A 'test-cli' program that takes user's wallet seed phrase and either verifies transaction presence in Masterchain or submits a new key block to the Lite-client.


Find the latest updates and more on our GitHub - https://github.com/tessellator-research/ton_bridge_contest
Tessellator Limited
1
You have not added any comments yet...
by rating

Issues

potential issues:
1. lite-client only accepts key_blocks where next_validators is set
2. both JS and FunC code looks less readable and maintainable than in some of other submissions (such as a lot of magic numbers in FunC)
3. Tests fail, even node_modules tweak described in README didn't help. ERROR: TypeError: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined
4. It is possible to make `check_transaction` message with such specific coins amount that gas will be exhausted during lite-client's `check_block`. In this case `transaction-checker` won't receive neither response nor bounce from lite-client, and `pending_checks` will store this pending query record forever and grow storage size over time.
5. in transaction checker queryId is a random 64 bit number, so collisions are possible (even worse with previous point I stated). I think query_id should just be stored as number and incremented
Windows 10
2
Small Shrimp Feb 5 at 18:54
Thank you for your review, there is a typo in the utils.ts, which leads to failures in tests. For tests to pass please change "root_hash: data.result.id.rootHash" to "root_hash: data.result.id.root_hash" on line 142 in utils.ts and creating "cache" directory inside "tests" directory.
1. It's hard to read code.
2. Lite-client and tx-checker work only with ordinary cells. No support for exotic cells.
3. In lite-client you get all validators and use them to check signatures. You should get only 'main' validators.
1
Implemented basic functionality with a few security issues: no main_validators logic, not all keyblocks can be processed (requires `contains_next_validators?`). In tx-checker block is used as proof (ok). No exotic - thus expensive (and won't work for big blocks).

More info on issues: https://contest.com/docs/TrustlessBridgeChallengeAssessment
Nobody added any issues yet...