Remix

在 Remix 中通過合約互動發送代幣

  • October 13, 2020

我知道使用 Remix 中的 value 欄位將 ETH 包含在我的函式呼叫事務中,但是有沒有辦法在我的事務中發送另一個令牌,例如 LINK?

此外,我想要求發送一定數量的 LINK,類似於 ETH 的 require(msg.value == X) 。我已經導入並初始化了令牌介面,但不確定從那裡去哪裡,也不知道如何在 Remix 中發送令牌來測試它。

import "https://github.com/smartcontractkit/chainlink/blob/develop/evm-contracts/src/v0.6/interfaces/LinkTokenInterface.sol";
LinkTokenInterface internal LINK;
//in constructor (kovan LINK token)
LINK = LinkTokenInterface(0xa36085F69e2889c224210F603D836748e7dC0088);

當然可以,但是流程有點違反直覺,需要一些時間來適應。

您可以將 ETH 和/或數據發送到合約函式。數據可以指示合約功能從某人那裡獲取一定數量的代幣,通常是 msg.sender(但不一定)。

你的合約將使用 ERC20transferFrom(<funder>, <amount>)函式。既然我們不能讓每個人都幫自己拿別人的錢,那麼使用者首先批准一個帶有approve(<yourContract>, <agreedAmount>)功能或increaseAllowance()功能的津貼。

例如

token = LinkTokenInterface(0xa36085F69e2889c224210F603D836748e7dC0088)
...
token.transferFrom(msg.sender, msg.value);
  • Alice => ERC20 “讓合約擁有我的代幣”
  • Alice => 合約“拿走我的代幣”
  • 合約 => ERC20 “給我愛麗絲的代幣”

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/89324