# Initialization # Admin can issue and delete at will init: contract.storage[0] = msg.sender code: # If a message with one item is sent, that's a balance query if msg.datasize == 1: addr = msg.data[0] return(contract.storage[addr]) # If a message with two items [to, value] are sent, that's a transfer request elif msg.datasize == 2: from = msg.sender fromvalue = contract.storage[from] to = msg.data[0] value = msg.data[1] if fromvalue >= value and value > 0 and to > 4: contract.storage[from] = fromvalue - value contract.storage[to] += value contract.storage[2] = from contract.storage[3] = to contract.storage[4] = value contract.storage[5] += 1 return(1) return(0) elif msg.datasize == 3 and msg.sender == contract.storage[0]: # Admin can issue at will by sending a [to, value, 0] message if msg.data[2] == 0: contract.storage[msg.data[0]] += msg.data[1] # Change admin [ newadmin, 0, 1 ] # Set admin to 0 to disable administration elif msg.data[2] == 1: contract.storage[0] = msg.data[0] # Fetch last transaction else: return([contract.storage[2], contract.storage[3], contract.storage[4], contract.storage[5]], 4)