Info

Download ZIP (16.9 KB)

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 multisig wallet implemented in Func and command line interface in Fift.
1
Some addition:
- there is a bug in `list_orders_unsigned` get-method that I fixed after submission.
` orders.udict_get_next?(32, order_id);` starts with order_id equal to -1. But it MUST starts with 0 to skip the special value in order book.
- message layout of smc is described at `multisig-wallet-code.fc`. Read this short description to better understand what is happening.
- `order_id` is a last 4 bytes of hash of order:
order_id = hash(expiration, seed, order_transfer_msg) >> 224.

2^32 is a good entropy to avoid collisions, but if it isn't enough we can easy increase to 6 bytes/8 bytes.

`seed` guarantees that the orders with same amount and address can be created again separately.
You have not added any comments yet...
by rating

Issues

Magic Python Nov 4, 2019 at 10:24
plus:
All required features are implemented.
Good performance (0.074G for a transfer with n=16, k=10).
accept_message() is called only after one signature was verified.

minus:
seqno is not included in a hash. The same order could be easily executed multiple times.
10
You check signature over msg_body which does not include seqno. I can surely take any past message, replace seqno with new and feed it into contract. Am I right?
1
Dreamy Snail Oct 24, 2019 at 04:39
Yes, this is my mistake.
Nobody added any issues yet...