Last active
May 6, 2019 16:00
-
-
Save wemeetagain/9382663 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// contract 1 | |
// convenience nameserver | |
// name -> address | |
// address -> name | |
// [name, newOwnerAddress (optional)] | |
// only one name allowed per address | |
// newOwnerAddress will only be applicable if the name is already claimed | |
// if the transaction fee isn't enough to run the contract, stop | |
if tx.value < 100 * block.basefee: | |
stop | |
// if the name is invalid, stop | |
if tx.data[0] < 100: | |
stop | |
// if the name has already been claimed | |
if contract.storage[tx.data[0]]: | |
// if the sender isn't the current owner, stop | |
if contract.storage[tx.data[0]] != tx.sender: | |
stop | |
// if the newOwnerAddress is invalid, stop | |
if tx.data[1] < 100: | |
stop | |
// set new owner | |
contract.storage[tx.sender] = 0 | |
contract.storage[tx.data[0]] = tx.data[1] | |
// the name has not been claimed | |
else: | |
//if the sending address already has a name, stop | |
if contract.storage[tx.sender]: | |
stop | |
// set name owner as sending address | |
contract.storage[tx.sender] = tx.data[0] | |
contract.storage[tx.data[0]] = tx.sender | |
// contract 2 | |
// address -> contract address | |
// [contractAddress] -- contractAddress is the address of the contract to link to | |
// if the transaction fee isn't enough to run the contract, stop | |
if tx.value < 100 * block.basefee: | |
stop | |
contract.storage[tx.sender] = tx.data[0] | |
//contract 3 | |
// ID contract | |
// store id info | |
// two commands: add value at index, suicide contract | |
// [0,index, value] insert value at storage[1000+index] | |
// [1] suicide | |
// note: set contractcreator when creating contract | |
// if the transaction fee isn't enough to cover the contract, stop | |
if tx.value < 100 * block.basefee: | |
stop | |
// if the sender doesn't own this contract, stop | |
if tx.sender != CONTRACTCREATOR: | |
stop | |
if tx.data[0] == 0: | |
contract.storage[1000+tx.value[1]] = tx.value[2] | |
elif tx.data[0] == 1: | |
suicide(CONTRACTCREATOR) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment