45039


トークンを追加するメソッドを作りました  
トランザクションはブロックに書き込まれるのですが、トークンが増えません

処理前のトークンの確認

[code]

    truffle(rpc)> tk.balances(web3.eth.accounts[0])
    BigNumber { s: 1, e: 4, c: [ 10010 ] }
    
    truffle(rpc)> cc.balances(web3.eth.accounts[1])
    BigNumber { s: 1, e: 0, c: [ 0 ] }
    
[/code]

以下solidity抜粋

[code]

    pragma solidity ^0.4.23;
    import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";
    
    address public minter;
    uint256 public totalSupply;
    
    constructor(uint initialSupply) public {
        totalSupply = initialSupply;
        balances[msg.sender] = initialSupply;
        minter = msg.sender;
    }
    
    function chargeTK(uint256 _value) public {
        balances[minter] = balances[minter].add(_value);
        totalSupply = totalSupply.add(_value);
    }
    
[/code]

以下python抜粋

[code]

    W3.personal.unlockAccount(ADDRESS_0, ADDRESS_0_PWD)
    res = contract_instance.functions.transfer(W3.eth.accounts[1], 10).transact({'from': ADDRESS_0, 'gas': 50000})
    W3.personal.lockAccount(ADDRESS_0)
    res_dict = W3.eth.getTransaction(W3.toHex(res))
    while str(res_dict['blockNumber']) == 'None':
        time.sleep(5)
        res_dict = W3.eth.getTransaction(W3.toHex(res))
    
    print('blockNumber:', str(res_dict['blockNumber']))
    
[/code]

以下実行結果

[code]

    blockNumber: 30317
    
[/code]

処理後のトークンの確認

[code]

    truffle(rpc)> tk.balances(web3.eth.accounts[0])
    BigNumber { s: 1, e: 4, c: [ 10010 ] }
    
    truffle(rpc)> cc.balances(web3.eth.accounts[1])
    BigNumber { s: 1, e: 0, c: [ 0 ] }
    
[/code]

Ether Block
Explorerをインストールして確認したところ、トランザクションの確認(ガス消費)はできましたがトークンの動きがわかる情報がどこかわかりませんでした

`res = contract_instance.functions.transfer(W3.eth.accounts[1],
10).transact({'from': ADDRESS_0, 'gas':
50000})`の箇所に問題があるのであればエラーとになりそうですが、どこに問題があるか確認すべき箇所わかりますでしょうか?

pythonでの実行は置いておき、  
gethでの送金を試した結果を追加します

[code]

    > var tk_abi = [...]
    > var tk_con = web3.eth.contract(tk_abi)
    > var tk = tk_con.at("0x...")
    
    > tk.balanceOf(eth.accounts[0])
    10010
    
    > eth.defaultAccount=eth.accounts[0]
    > personal.unlockAccount(eth.accounts[0])
    > tk.transfer.sendTransaction(eth.accounts[1], 10)
    
    > tk.balanceOf(eth.accounts[0])
    10010
    
    > tk.balanceOf(eth.accounts[1])
    0
    
[/code]

やはりトークン送金できていませんでした


CC BY-SA 4.0
2018-06-21T09:56:13.927
44956
2019-05-26T05:50:35.560
2019-05-26T05:50:35.560
3060
27721
question
python ethereum solidity
スマートコントラクトへのトークン追加について


色々試しているうちに自己解決しました

[code]

    pragma solidity ^0.4.23;
    import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";
    
        address public minter;
        // uint256 public totalSupply;
    
        constructor(uint256 initialSupply) public {
            totalSupply_ = initialSupply;  // mod
            balances[msg.sender] = initialSupply;
            minter = msg.sender;
        }
    
[/code]

明確になっていないのですが、  
`totalSuplay`の変数宣言を削除  
質問にて記載が漏れていましたが、`balances`のマッピング宣言を削除  
あたりで、動くようになりました


CC BY-SA 4.0
2018-06-25T05:25:53.097
45039
2018-06-25T05:25:53.097
27721
44956
answer