首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我必须在合同中添加WETH转换标准,以及如何添加?

我必须在合同中添加WETH转换标准,以及如何添加?
EN

Ethereum用户
提问于 2020-10-19 15:06:26
回答 1查看 1.1K关注 0票数 0

我很困惑我是如何写一份关于WETH转换的合同的。

当我们编写一份智能合同,将用户资金存入合同时,我们是否应该在保存之前编写一些将eth转换为weth的代码?还是自动转换而不做任何事情?

我已经在uniswap的路由器合约()上找到了关于WETH的描述,当用户为uniswap池提供流动资金时调用它。

代码语言:javascript
复制
IWETH(WETH).deposit{value: amountETH}();
assert(IWETH(WETH).transfer(pair, amountETH));

*https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol

另一方面,例如MakerDAO的保险库合同上的join.sol( functions ),复合的Ctoken合同上的CEther.sol(),虽然它们似乎是将eth存放到合同中的函数,但我看不到weth的任何信息。

*https://etherscan.io/address/0x2f0b23f53734252bda2277357e97e1517d6b042a#code

代码语言:javascript
复制
function join(address usr) external payable note {
require(live == 1, "ETHJoin/not-live");
require(int(msg.value) >= 0, "ETHJoin/overflow");
vat.slip(ilk, usr, int(msg.value));

*https://github.com/compound-finance/compound-protocol/blob/master/contracts/CEther.sol

代码语言:javascript
复制
function doTransferIn(address from, uint amount) internal returns (uint) { 
// Sanity checks 
require(msg.sender == from, "sender mismatch");
require(msg.value == amount, "value mismatch");
return amount; }

在我确定上面的问题之后,我想要做的是写一个合同,用户可以通过与这个合同的交互将ETH存入另一个合同中。我知道如果用户有WETH,bc很容易,我所要做的就是编写函数转移,但我不知道如何使用ETH本身。

EN

回答 1

Ethereum用户

发布于 2020-10-20 00:01:52

WETH是一个ERC20令牌,它具有从醚到WETH的1:1映射。

要获得WETH,您必须使用要转换为WETH的以太值调用函数deposit。在javascript中,如下所示:

代码语言:javascript
复制
WETH.methods.deposit().send({
    value:  etherAmount,
    from: userAddress
});

相反,要提取以太,则必须调用函数withdraw,并使用要检索的WETH值。

代码语言:javascript
复制
WETH.methods.withdraw(wethAmount).send({
    from: userAddress
});

有些合同,如Uniswap或MakerDAO,使用WETH来简化其工作流程,因为它是一个ERC20,它们不需要为处理以太而设置例外。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/89490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档