Skip to content

Latest commit

 

History

History
221 lines (173 loc) · 25.8 KB

deploy-erc20-token.md

File metadata and controls

221 lines (173 loc) · 25.8 KB

How to: Deploy an ERC20 token to Echo with Solidity

General guidelines

Before proceeding, please read this document to know how to create a token Hello Echo! contract.

ERC20 is the token standard we use on the Echo blockchain. It’s a set of rules a token must comply with. Basically, an ERC20 token is a smart contract following these rules.

How to deploy a smart contract to the Echo network.

For example, let’s use this ERC20 token code we found on the Internet:

pragma solidity ^0.4.16;

contract Token {

    function totalSupply() constant returns (uint256 supply) {}

    function balanceOf(address _owner) constant returns (uint256 balance) {}

    function transfer(address _to, uint256 _value) returns (bool success) {}

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}

    function approve(address _spender, uint256 _value) returns (bool success) {}

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {}

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}

contract StandardToken is Token {

    function transfer(address _to, uint256 _value) returns (bool success) {
        if (balances[msg.sender] >= _value && _value > 0) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        } else { return false; }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
            balances[_to] += _value;
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            Transfer(_from, _to, _value);
            return true;
        } else { return false; }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
    uint256 public totalSupply;
}

contract EchoToken is StandardToken {

    string public name;
    uint8 public decimals;
    string public symbol;
    string public version;
    
    function EchoToken() {
        balances[msg.sender] = 100000;
        totalSupply = 100000;
        name = "EchoToken";
        decimals = 0;
        symbol = "ECT";
    }

    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);


        if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { throw; }
        return true;
    }
    
    function () {
        throw;
    }
}

In our example, the name of the token is EchoToken. The total supply is 100,000 EchoTokens, and they are all stored in the creator’s account. Let’s compile it using Remix IDE to get the contract bytecode. To know more about the procedure, follow this link.

Apply cli-wallet to create a contract using the bytecode we received after this RemixIDE compiling.

unlocked >>> create_contract nathan "606060405234156200001057600080fd5b5b620186a06000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a06002819055506040805190810160405280600981526020017f4563686f546f6b656e000000000000000000000000000000000000000000000081525060039080519060200190620000ae92919062000120565b506000600460006101000a81548160ff021916908360ff1602179055506040805190810160405280600381526020017f4543540000000000000000000000000000000000000000000000000000000000815250600590805190602001906200011892919062000120565b505b620001cf565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016357805160ff191683800117855562000194565b8280016001018555821562000194579182015b828111156200019357825182559160200191906001019062000176565b5b509050620001a39190620001a7565b5090565b620001cc91905b80821115620001c8576000816000905550600101620001ae565b5090565b90565b610fb780620001df6000396000f300606060405236156100ad576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100c0578063095ea7b31461014f57806318160ddd146101a957806323b872dd146101d2578063313ce5671461024b57806354fd4d501461027a57806370a082311461030957806395d89b4114610356578063a9059cbb146103e5578063cae9ca511461043f578063dd62ed3e146104dc575b34156100b857600080fd5b5b600080fd5b005b34156100cb57600080fd5b6100d3610548565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101145780820151818401525b6020810190506100f8565b50505050905090810190601f1680156101415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015a57600080fd5b61018f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105e6565b604051808215151515815260200191505060405180910390f35b34156101b457600080fd5b6101bc6106d9565b6040518082815260200191505060405180910390f35b34156101dd57600080fd5b610231600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106df565b604051808215151515815260200191505060405180910390f35b341561025657600080fd5b61025e61095d565b604051808260ff1660ff16815260200191505060405180910390f35b341561028557600080fd5b61028d610970565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ce5780820151818401525b6020810190506102b2565b50505050905090810190601f1680156102fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031457600080fd5b610340600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a0e565b6040518082815260200191505060405180910390f35b341561036157600080fd5b610369610a57565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103aa5780820151818401525b60208101905061038e565b50505050905090810190601f1680156103d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103f057600080fd5b610425600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610af5565b604051808215151515815260200191505060405180910390f35b341561044a57600080fd5b6104c2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c60565b604051808215151515815260200191505060405180910390f35b34156104e757600080fd5b610532600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f03565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105de5780601f106105b3576101008083540402835291602001916105de565b820191906000526020600020905b8154815290600101906020018083116105c157829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156107ab575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156107b75750600082115b1561094c57816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610956565b60009050610956565b5b9392505050565b600460009054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a065780601f106109db57610100808354040283529160200191610a06565b820191906000526020600020905b8154815290600101906020018083116109e957829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610aed5780601f10610ac257610100808354040283529160200191610aed565b820191906000526020600020905b815481529060010190602001808311610ad057829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610b455750600082115b15610c5057816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610c5a565b60009050610c5a565b5b92915050565b600082600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff1660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f616464726573732c627974657329000000000000000000000000000000000000815250602e01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828051906020019080838360005b83811015610ea25780820151818401525b602081019050610e86565b50505050905090810190601f168015610ecf5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f1925050501515610ef757600080fd5b600190505b9392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b929150505600a165627a7a72305820f3f2a830415fcccc37b8431b37d85b683d3b97b20a77bdbb460d91d9cd6996480029" 0 ECHO "" true

Use the get_contract_result command to check if the contract creation was successful.

unlocked >>> get_contract_result 1.12.4
{
  "exec_res": {
    "excepted": "None",
    "new_address": "0100000000000000000000000000000000000001",
    "output": "606060405236156100ad576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100c0578063095ea7b31461014f57806318160ddd146101a957806323b872dd146101d2578063313ce5671461024b57806354fd4d501461027a57806370a082311461030957806395d89b4114610356578063a9059cbb146103e5578063cae9ca511461043f578063dd62ed3e146104dc575b34156100b857600080fd5b5b600080fd5b005b34156100cb57600080fd5b6100d3610548565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101145780820151818401525b6020810190506100f8565b50505050905090810190601f1680156101415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015a57600080fd5b61018f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105e6565b604051808215151515815260200191505060405180910390f35b34156101b457600080fd5b6101bc6106d9565b6040518082815260200191505060405180910390f35b34156101dd57600080fd5b610231600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106df565b604051808215151515815260200191505060405180910390f35b341561025657600080fd5b61025e61095d565b604051808260ff1660ff16815260200191505060405180910390f35b341561028557600080fd5b61028d610970565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ce5780820151818401525b6020810190506102b2565b50505050905090810190601f1680156102fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031457600080fd5b610340600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a0e565b6040518082815260200191505060405180910390f35b341561036157600080fd5b610369610a57565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103aa5780820151818401525b60208101905061038e565b50505050905090810190601f1680156103d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103f057600080fd5b610425600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610af5565b604051808215151515815260200191505060405180910390f35b341561044a57600080fd5b6104c2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c60565b604051808215151515815260200191505060405180910390f35b34156104e757600080fd5b610532600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f03565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105de5780601f106105b3576101008083540402835291602001916105de565b820191906000526020600020905b8154815290600101906020018083116105c157829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156107ab575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156107b75750600082115b1561094c57816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610956565b60009050610956565b5b9392505050565b600460009054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a065780601f106109db57610100808354040283529160200191610a06565b820191906000526020600020905b8154815290600101906020018083116109e957829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610aed5780601f10610ac257610100808354040283529160200191610aed565b820191906000526020600020905b815481529060010190602001808311610ad057829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610b455750600082115b15610c5057816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610c5a565b60009050610c5a565b5b92915050565b600082600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff1660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f616464726573732c627974657329000000000000000000000000000000000000815250602e01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828051906020019080838360005b83811015610ea25780820151818401525b602081019050610e86565b50505050905090810190601f168015610ecf5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f1925050501515610ef757600080fd5b600190505b9392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b929150505600a165627a7a72305820f3f2a830415fcccc37b8431b37d85b683d3b97b20a77bdbb460d91d9cd6996480029",
    "code_deposit": "Success",
    "gas_for_deposit": 1126387,
    "deposit_size": 4023
  },
  "tr_receipt": {
    "status_code": 1,
    "gas_used": 1132801,
    "bloom": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "log": []
  },
  "contract_id": "1.11.1"
}

There are no exceptions, meaning the contract creation was successful.

Interaction with an ERC-20 contract

Let’s view your EchoTolen account balance. To do it, call the method balanceof(address). This method has the signature hash of 70a08231. To pass the address to the method, we convert our account ID into a string of 32 hexadecimal digits, padding it with the necessary number of zeroes.

Example: 1.2.26 -> 000000000000000000000000000000000000000000000000000000000000001a. Then you have to concatenate the method signature hash and the address.

Call the balanceof method:

unlocked >>> call_contract nathan 1.11.1 "70a08231000000000000000000000000000000000000000000000000000000000000001a" 0 ECHO

As a result, you get the code below. The output field is the return value on the smart contract method. We see that the account 1.2.26 holds 100000 ECT.

unlocked >>> get_contract_result 1.12.6
{
  "exec_res": {
    "excepted": "None",
    "new_address": "0000000000000000000000000000000000000000",
    "output": "00000000000000000000000000000000000000000000000000000000000186a0",
    "code_deposit": "None",
    "gas_for_deposit": 0,
    "deposit_size": 0
  },
  "tr_receipt": {
    "status_code": 1,
    "gas_used": 43667,
    "bloom": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "log": []
  }
}

Now, let’s try to transfer funds from the account 1.2.26 to the account 1.2.5. After it, we will check the balances of both accounts. The transfer method signature hash is a9059cbb. Two other parameters we have to pass to the method are the destination address and the number of tokens transferred. Finally, the get this call:

unlocked >>> call_contract nathan 1.11.1 "a9059cbb000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000ff" 0 ECHO

Now, let’s check our account balances. The balance of the account 1.2.26 looks like this:

unlocked >>> get_contract_result 1.12.8
{
  "exec_res": {
    "excepted": "None",
    "new_address": "0000000000000000000000000000000000000000",
    "output": "00000000000000000000000000000000000000000000000000000000000185a1",
    "code_deposit": "None",
    "gas_for_deposit": 0,
    "deposit_size": 0
  },
  "tr_receipt": {
    "status_code": 1,
    "gas_used": 43667,
    "bloom": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "log": []
  }
}

The balance of the account 1.2.5 is

unlocked >>> get_contract_result 1.12.9
{
  "exec_res": {
    "excepted": "None",
    "new_address": "0000000000000000000000000000000000000000",
    "output": "00000000000000000000000000000000000000000000000000000000000000ff",
    "code_deposit": "None",
    "gas_for_deposit": 0,
    "deposit_size": 0
  },
  "tr_receipt": {
    "status_code": 1,
    "gas_used": 43667,
    "bloom": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "log": []
  }
}