使用testRPC发送简单货币

时间:2017-08-22 12:23:15

标签: ethereum solidity smartcontracts truffle

我的问题可能微不足道,但我无法找到答案。 所以基本上我有简单的合同,从可靠性文档,添加到松露。 我使用松露3.59和testRPC 4.0.1



pragma solidity ^0.4.0;

contract Coin {
    // The keyword "public" makes those variables
    // readable from outside.
    address public minter;
    mapping (address => uint) public balances;

    // Events allow light clients to react on
    // changes efficiently.
    event Sent(address from, address to, uint amount);

    // This is the constructor whose code is
    // run only when the contract is created.
    function Coin() {
        minter = msg.sender;
    }

    function mint(address receiver, uint amount) {
        if (msg.sender != minter) return;
        balances[receiver] += amount;
    }

    function send(address receiver, uint amount) {
        if (balances[msg.sender] < amount) return;
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        Sent(msg.sender, receiver, amount);
    }
}
&#13;
&#13;
&#13;

这是合同,后来在标准localhost:8545上运行testRPC。 然后,松露编译,迁移和部署,一切正常,我去松露控制台,现在,请解释我如何将硬币从一个帐户转移到另一个帐户,默认情况下由testRPC生成。

其他问题!如何检查testRPC上的帐户余额。

干杯!

1 个答案:

答案 0 :(得分:0)

我认为你混合了两个不同的东西,从你提出的问题我认为你认为tokenether。实际上,醚在以太坊中的处理方式不同,它是用于推动交易和运营的主要机制。你不能用稀薄的空气来稀释醚,例如令牌就是这种情况。

TestRPC默认启动时会为每个帐户提供100 Ether(NOT TOKENS)!一旦部署了智能合约(除非指定了不同的默认用户),松露使用testrpc的帐户[0]作为主要部署者。

您运行truffle deploy并且合同已经开始。现在,如果你查看你的合同,你有一个构造函数

function Coin() {
   minter = msg.sender;
}

这使得account [0]在testRPC中的第一个帐户成为minter。 minter可以通过帐户[0]从稀薄的空气中创建令牌,您可以将任意数量的令牌存入您指定的任何地址。假设您想给帐户[1]

提供一些“newbe”令牌
function mint(address receiver, uint amount) {
    if (msg.sender != minter) return;
    balances[receiver] += amount;
}

你调用mint函数指定帐户[1]以及你想要提供多少令牌。在控制台中运行该功能,其完成帐户[1]有100个令牌

如果您想知道帐户[1]有多少余额可以查看

mapping (address => uint) public balances;

这可以由您轻松运行的任何人公开承认 contractInsance.balances[account[1]];您将获得帐户[1]或任何地址的数量。

如果我错过了一点或者某些事情不明确,请给我评论