Download ZIP (9.8 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.




You have not added any comments yet...
by rating


Clever Turkey Nov 4, 2019 at 18:55
Manual DNS:
- Signature and name of dnsresolve method are incorrect.
- There is no way to completely delete expired domains.
- Maximum domain length is limited by 30 bytes.
- Condition `next_subdomain_length > ( slice_bits(data) + 8)` is very strange. This is not a desired behavior for DNS.
Magic Python Oct 29, 2019 at 17:04
Sadly it didn't work on our test (n=16, k=10).
Anybody may send a message to this account and drain its balance.
A lot of required features are not implemented.
Suave Ram Oct 29, 2019 at 21:13
Below is a solution: an exception due to the lack of a valid signature.
The resolve method is named incorrect, expected name is dnsresolve, therefore your resolve will have 128517 method id versus the 123660 expected for a dns resolver, not counting that expected signature is (slice, int -> (int, cell)) versus your (slice -> (int, cell)) result. Moreover, the int and cell in the results contain vastly different data that is expected per specification.

Nevertheless, this is an interesting implementation supporting resolution of multiple domains in one go (although that feature is mostly useless because getters are executed on client anyway, the client may just query multiple times if needed). Using hashes is one of ways of overcoming limitations of prefix trees, and, possibly, accelerating tree lookups and allowing arbitary length of keys at the cost of storage price (even domain with one letter will require storage of 256-bit hash).
Suave Ram Oct 21, 2019 at 11:57
Thanks for the tip about predefined method names.
Deleted Account Oct 18, 2019 at 20:16
Multisig: messages without signatures (or without correct signatures) will not be only accepted, but also will be written to the persistent storage.
It is never checked, by the way that cur_message_hash is indeed hash of msg
Suave Ram Oct 19, 2019 at 11:51
You're right. An exception should be introduced with 0 valid signatures.
As I see accept_message() is called after ALL signatures are checked. It is very likely than it won't be enough gas_credit to handle orders with multiple signatures
Suave Ram Oct 19, 2019 at 11:50
Rising up to the first correct signature does not exclude N incorrect at the beginning. That will not remove the issue of gas. Therefore, I decided so. Options are possible.
Deleted Account Oct 18, 2019 at 20:26
DNS: looks like Suave Ram assumed that if there are many domains separated by "\0" it means that contract should return many results (resolve each domain separately).
Besides domains are stored as integers and search is quite ineffective.
Suave Ram Oct 19, 2019 at 11:54
It was a compromise between " subdomain name, or with several subdomain names" and "If the subdomain is found, the smart contract should return (8m, dns-record-value)"
Notes on Manual DNS:
- doesn't use prefix dicts, uses fixed-length 256-bit keys; 

- sdns.fc:154 compares subdomain length (query) with length of dns entry (data)? Maybe I don't get something, sorry

- dnsresolve (called resolve) supports multiple domains with custom output format - there is no check for how many items are being added to output cell, so it is likely to overflow.
Magic Python Oct 21, 2019 at 04:47
A bit confused about HOWTO in multisig.
What should I do to create a wallet (with n=16, k=10) in the blockchain?
Suave Ram Oct 21, 2019 at 06:48
Minimum test suite with parameters of 10 users and 5 signatures is necessary(for example)(the current bit field is 128 bits long).
Create all z* + vm-status.sav file..."
10 (n) and 5 (k) to 128 under the condition n>=k
Nobody added any issues yet...