Source on GitHub

Smart Contract Address


Source on GitHub

Smart Contract Address


Testing and Issues

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

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




First project is Conditional transfer smart contract.
It allows to receive funds and conditionally transfer them to beneficiaries. There can be different conditions, it can be automatic, manually controlled, have or do not have timely deadlines, can split collected funds using different rules, etcetra.
You can read very detailed information about this contract at the documentation:

Current deployed contract address (an exemplary instance, as those are one-shot contracts): kf8U16VhEcP9AmYMsLTCWvzbqp3JXLYRZiJ7JbE8J4XAlEZT
CTSC: Conditional transfer smart contract
Second project is Data storage proxy smart contract.
It can be used to store data and use it in many different ways: querying with getter method, inquiring with internal message, or injecting into proxied internal message. Each box of data can have its own owner, access rights, attributes and even can be willingly protected from contract owner.
You can read very detailed information about this contract at the documentation:

Current deployed contract address (with test box having all read access enabled):
DSPSC: Data storage proxy smart contract
Good luck to all and happy new year!
Santa's cosmic spaceship
I would like also to mention the pull request to TON repository to improve fift and func (+ bugfix):
Current proposed implemented improvements:
* c5-aware runvm function (pushes it to stack)
* runvm is now aware of commited states
* implemented dict operations on slice keys
* fix of VEC not disabling readline with -c
* added -u and -uu flags to func (warn about unused variables and calls)
* added integer constants support
* added include keyword
* tvm asm used procs optimizer
Master pusher
You have not added any comments yet...
by rating


Magic Python Jan 30, 2020 at 16:27
Quick question: how does this code work?

throw_unless(42, check_signature(shash, signature, data.[controller_addr]()));

You use an address as a public key, right?
Shiny Giraffe Jan 30, 2020 at 23:08
There are two modes of operation: external message controlled (ext_controller = 1) and internal message controlled (ext_controller = 0).

If external mode is used controller_addr contains public key of the controller.
If internal mode is used controller_wc contains chain id of controlling contract and controller_addr contains address.

This is done that way to do not create unneccessary entities (because public key coincidentally has same length as address and is somewhat logically similar). It may be possible to easily realias it as [controller_pubkey], but that would dither conciseness of code.

Internal message handling logic checks that ext_controller = 0, and external message handling logic throws unless ext_controller is non-zero.

Some relevants parts of code attached as picture.

!!! UPDATE: For conciseness and understanding I refectored code with my bleeding edge features. Please check them out. !!!
P.S. Judging that comments are now frozen, I can assume that "we are in the endgame now".
Nobody added any issues yet...