Blockchain 如何将ERC 20代币自动发送给ETH(solidity)发送方

Blockchain 如何将ERC 20代币自动发送给ETH(solidity)发送方,blockchain,ethereum,solidity,Blockchain,Ethereum,Solidity,我正在使用solidity创建一个erc20代币。我不是编码专家。我设法从谷歌收集代码。在以太坊网络上部署合同之前,我要执行以下操作: 每当有人将ETH发送到智能合约地址时,应自动将等效令牌发送到该ETH交易的发件人地址。怎么做?此外,我还想设定以太币的价格。。请为我提供一个示例代码…当合同通过传输接收到以太时,它执行回退功能,在那里您可以访问msg.value,并知道msg.sender发送的以太单位有多少。如果您有代币汇率,您可以根据发送的金额发行代币 //fallback function

我正在使用solidity创建一个erc20代币。我不是编码专家。我设法从谷歌收集代码。在以太坊网络上部署合同之前,我要执行以下操作:


每当有人将ETH发送到智能合约地址时,应自动将等效令牌发送到该ETH交易的发件人地址。怎么做?此外,我还想设定以太币的价格。。请为我提供一个示例代码…

当合同通过传输接收到以太时,它执行回退功能,在那里您可以访问
msg.value
,并知道
msg.sender
发送的以太单位有多少。如果您有代币汇率,您可以根据发送的金额发行代币

//fallback function can be used to buy tokens
  function () external payable {
    buyTokens(msg.sender);
  }

  // low level token purchase function
  function buyTokens(address beneficiary) public payable {
    require(beneficiary != address(0));
    require(validPurchase());

    uint256 weiAmount = msg.value;

    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(rate);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    token.mint(beneficiary, tokens);
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

    forwardFunds();
  }

来源:

您可以首先为您的令牌添加一个值,例如:

uint price = 0.0001 ether ;
您必须在合同描述开始处的坚固性代码中添加这一行,因此在这里的行之后:

string public name;
uint8 integer decimals;
string public symbol;      
然后创建一个“应付”功能,允许您的合同获得付款(接收以太付款),您只需铸造硬币(使您的合同能够发行新代币)并将其发送给员工

例如,当某人向合同地址支付0.01以太时,他将收到100个代币(因为1个代币=0.0001以太,如上所述)

下面是一些简单的代码:

function() public payable {
    uint toMint = msg.value/price;
    totalSupply += toMint;
    balances[msg.sender] += toMint;

    emit Transfer(0, msg.sender, toMint);
}

它创建100个代币的数量,然后更新合同中代币的总供应量,然后将该数量发送给用户。用户地址为“msg.sender”。最后但并非最不重要的一点是,我们必须将交易广播到区块链中,这样它将被挖掘,然后变得可见(这样用户可以看到他的新平衡)。这是通过转账完成的。转账的来源是合同地址(内部值为0),目的地是用户地址,发送的金额是名为“toMint”的变量的值。

您提供示例代码,如果它不起作用,我们可能会帮助您。下面的链接提供了示例代码:我只想实现两个函数。一种是固定代币的eth费率,当eth被发送到智能合约地址时,应自动向eth的发送者发送等值硬币,直到固定日期。下面的链接提供了示例代码:我只想实现两个功能。一种是确定代币的eth汇率,当eth被发送到智能合约地址时,应自动将等值硬币发送给eth的发送者,直到固定日期。我是一个noob。因此,请帮助我用清晰的分步代码来添加该功能。。如果可能的话,请在我共享的示例代码中包含这些功能,并提供给我。。非常感谢。