Info

Download ZIP (196.4 MB)

Testing and Issues

You can test this entry and submit issues during the testing period of the Blockchain Contest contest.

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

Voting

33

Comments

ℹ️ A sync payment channel implemented using funC, fift and Go.

We implemented not only a smart contract and wrappers for it, but we built a peer2peer client. We will be happy to get any feedback from other participants and wish luck to all of you!



Good luck, guys!🌏
18
We have updated our smart contract. Currently it is possible to use only 1 cell to store all the state. You can see it on github

https://github.com/button-tech/ton-sync-payments-channel
3
You have not added any comments yet...
by rating

Issues

Magic Python Nov 5, 2019 at 17:05
plus:
Great infrastructure. It was nice to test and it even worked from the second attempt.

There are some corner cases that are not handled in a client. For example, on my first attempt, both dockers eventually exited and funds stuck forever on the smart contract. But It did enter some invalid input.

I should note that this is the only submission with a prototype of a real client. And the only submission with a presentation included.

state hash includes contract address. So one can't reuse signatures between different smart contracts.

accept_message called only at the point when no exceptions could be thrown.

Overall smart contract logic seems to be correct.

questions/minus:
What prevents the second user to invoke get_money_back and receive all money the first user put?

ifnot(contract_status == 0x1ee564fc) check is reduntant.

first_user_address_signature could be reused in different contracts.
11
Keen Gnat Nov 6, 2019 at 04:23
> > What prevents the second user to invoke get_money_back and receive all money the first user put?
> > ifnot(contract_status == 0x1ee564fc) check is reduntant.

Yes, you're right. We need to check priority of the user. And we forgot to remove ifnot(contract_status == 0x1ee564fc) during the development. Both of it was fixed after the submission by commit: https://github.com/button-tech/ton-sync-payments-channel/commit/3bfff180ca4015112381aa83cbd0270b1e939645

> > first_user_address_signature could be reused in different contracts.

Correct. The problem may be happens when first user lost it's private key from the previous contract.
First solution: This issue can be solved by signing contract address with the state that is already signed as well
Second solution: To solve this issue we can add contract address to the signing body with the user's address.
И
Игорь Гонченко Oct 17, 2019 at 14:11
Д
2
Keen Gnat Oct 17, 2019 at 14:19
malevich square TON's version (2019)
Nobody added any issues yet...