Remix
在 Remix 中通過合約互動發送代幣
我知道使用 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(但不一定)。
你的合約將使用 ERC20
transferFrom(<funder>, <amount>)
函式。既然我們不能讓每個人都幫自己拿別人的錢,那麼使用者首先批准一個帶有approve(<yourContract>, <agreedAmount>)
功能或increaseAllowance()
功能的津貼。例如
token = LinkTokenInterface(0xa36085F69e2889c224210F603D836748e7dC0088) ... token.transferFrom(msg.sender, msg.value);
- Alice => ERC20 “讓合約擁有我的代幣”
- Alice => 合約“拿走我的代幣”
- 合約 => ERC20 “給我愛麗絲的代幣”
希望能幫助到你。