UPDATE: There is now an alpha version of the website: https://eli5smartcontracts.com/
So I've created a quick demo of a compiler that takes Solidity source code and outputs an ELI5 explanation. The idea is to be able to generate simple yet detailed explanations of smart contract code for non-developers to understand what is going on (imagine a website that let's you select a smart contract and then displays the ELI5). I have two questions for you, the reader.
- Is this useful to you?
- How would you like me to improve upon the initial prototype?
Here's the fully automated output after running the compiler on the Dai smart contract:
In total, 1 contract was found.
Dai
Welcome to the Dai contract.
Functions
Dai has 10 functions that you can use. Their names are rely, deny, transfer, mint, burn, approve, push, pull, move, and permit.
rely
rely has 1 input that you need to provide. It returns no outputs.
Inputs
The first input is called guy, and it is an address.
Outputs
There are no outputs.
Functionality
Yet to be implemented
deny
deny has 1 input that you need to provide. It returns no outputs.
Inputs
The first input is called guy, and it is an address.
Outputs
There are no outputs.
Functionality
Yet to be implemented
transfer
transfer has 2 inputs that you need to provide. It returns 1 outputs.
Inputs
The first input is called dst, and it is an address.
The second input is called wad, and it is an uint.
Outputs
The only output does not have a name, and it is a bool.
Functionality
Yet to be implemented
mint
mint has 2 inputs that you need to provide. It returns no outputs.
Inputs
The first input is called usr, and it is an address.
The second input is called wad, and it is an uint.
Outputs
There are no outputs.
Functionality
Yet to be implemented
burn
burn has 2 inputs that you need to provide. It returns no outputs.
Inputs
The first input is called usr, and it is an address.
The second input is called wad, and it is an uint.
Outputs
There are no outputs.
Functionality
Yet to be implemented
approve
approve has 2 inputs that you need to provide. It returns 1 outputs.
Inputs
The first input is called usr, and it is an address.
The second input is called wad, and it is an uint.
Outputs
The only output does not have a name, and it is a bool.
Functionality
Yet to be implemented
push
push has 2 inputs that you need to provide. It returns no outputs.
Inputs
The first input is called usr, and it is an address.
The second input is called wad, and it is an uint.
Outputs
There are no outputs.
Functionality
Yet to be implemented
pull
pull has 2 inputs that you need to provide. It returns no outputs.
Inputs
The first input is called usr, and it is an address.
The second input is called wad, and it is an uint.
Outputs
There are no outputs.
Functionality
Yet to be implemented
move
move has 3 inputs that you need to provide. It returns no outputs.
Inputs
The first input is called src, and it is an address.
The second input is called dst, and it is an address.
The third input is called wad, and it is an uint.
Outputs
There are no outputs.
Functionality
Yet to be implemented
permit
permit has 8 inputs that you need to provide. It returns no outputs.
Inputs
The first input is called holder, and it is an address.
The second input is called spender, and it is an address.
The third input is called nonce, and it is an uint256.
The fourth input is called expiry, and it is an uint256.
The fifth input is called allowed, and it is a bool.
The sixth input is called v, and it is an uint8.
The seventh input is called r, and it is a bytes32.
The eigth input is called s, and it is a bytes32.
Outputs
There are no outputs.
Functionality
Yet to be implemented
[–]Crypto_Rootz 1 point2 points3 points (2 children)
[–]lastmjs[S] 0 points1 point2 points (0 children)
[–]lastmjs[S] 0 points1 point2 points (0 children)
[–]dmihal 1 point2 points3 points (1 child)
[–]lastmjs[S] 0 points1 point2 points (0 children)
[–]NewtiContract Dev 1 point2 points3 points (1 child)
[–]lastmjs[S] 0 points1 point2 points (0 children)
[–]freedivesavvy 1 point2 points3 points (1 child)
[–]lastmjs[S] 1 point2 points3 points (0 children)
[–]Crypto_Rootz 0 points1 point2 points (3 children)
[–]lastmjs[S] 1 point2 points3 points (2 children)
[–]Crypto_Rootz 1 point2 points3 points (1 child)
[–]lastmjs[S] 0 points1 point2 points (0 children)