如何在starknet合约cairo 1.0中转账ETH?

问题描述 投票:0回答:1

我的 Starknet 合约使用 cairo v2,但 starknet 中的 ETH 代币是使用 cairo v0 部署的。但 Cairo v0 和 Cairo v2 在语法和数据类型上是两个截然不同的版本。那么如何在开罗starknet合约v2中转账ETH

我尝试使用IERC20来使用ETH代币但没有成功 https://i.stack.imgur.com/lyBvJ.png

ethereum starknet cairo-lang
1个回答
0
投票

我们需要使用

IERC20Camel
与驼峰合约进行交互(许多 ERC20 合约都是如此)。

#[starknet::interface]
trait IERC20Camel<TState> {
    fn totalSupply(self: @TState) -> u256;
    fn balanceOf(self: @TState, account: ContractAddress) -> u256;
    fn allowance(self: @TState, owner: ContractAddress, spender: ContractAddress) -> u256;
    fn transfer(ref self: TState, recipient: ContractAddress, amount: u256) -> bool;
    fn transferFrom(
        ref self: TState, sender: ContractAddress, recipient: ContractAddress, amount: u256
    ) -> bool;
    fn approve(ref self: TState, spender: ContractAddress, amount: u256) -> bool;
}

https://github.com/OpenZeppelin/cairo-contracts/blob/main/src/token/erc20/interface.cairo#L34C3-L34C3

步骤是这样的,

  1. 创建调度程序,
let erc20_dispatcher = IERC20Dispatcher { contract_address };
  1. transferFrom
    获得批准后
erc20_dispatcher.transferFrom(sender, recipient, amount);

批准移动代币
approve

在调用

transferFrom
(或
transfer_from
)之前,您的合约需要获得您想要转移的代币的批准。 这通常通过多次调用来完成。因此,当您要求客户端签署最终调用
transferFrom
的交易时,您可以在同一交易中在其之前添加对
approve
的调用。

© www.soinside.com 2019 - 2024. All rights reserved.