def return_op(computation): start_position, size = computation.stack_pop(num_items=2, type_hint=constants.UINT256) computation.extend_memory(start_position, size) output = computation.memory_read(start_position, size) computation.output = bytes(output) raise Halt('RETURN')
def _selfdestruct(computation, beneficiary): local_balance = computation.state.account_db.get_balance(computation.msg.storage_address) beneficiary_balance = computation.state.account_db.get_balance(beneficiary) # 1st: Transfer to beneficiary computation.state.account_db.set_balance(beneficiary, local_balance + beneficiary_balance) # 2nd: Zero the balance of the address being deleted (must come after # sending to beneficiary in case the contract named itself as the # beneficiary. computation.state.account_db.set_balance(computation.msg.storage_address, 0) computation.logger.debug( "SELFDESTRUCT: %s (%s) -> %s", encode_hex(computation.msg.storage_address), local_balance, encode_hex(beneficiary), ) # 3rd: Register the account to be deleted computation.register_account_for_deletion(beneficiary) raise Halt('SELFDESTRUCT')
def selfdestruct(computation): beneficiary = force_bytes_to_address( computation.stack_pop(type_hint=constants.BYTES)) _selfdestruct(computation, beneficiary) raise Halt('SELFDESTRUCT')
def stop(computation): raise Halt('STOP')