Tiny熊
Tiny熊 - 布道者
共建者 专业认证

广东 - 珠海 注册于 2017-10-20

擅长:智能合约,以太坊

2022世界杯预选赛赛程直播社区发起人 2022世界杯预选赛赛程直播团队对 DEFI 应用有深刻的理解和丰富的开发经验,如果你有开发、审计、培训合作等需求, 加我微信:xlbxiong 。 咨询问题在问答区提问即可,微信好友太多,不看问题,请凉解~

向TA求助
115635学分数
13954 贡献值
242个粉丝

最近动态

1分钟前 回答问题

Metamask 应该不支持 NFT 显示吧?

5小时前 回答问题

链上 debug 确实不好用,期待以后改善。

我推荐使用使用 fork 链上数据在本地 console.log

npx hardhat node --fork your-node-url

console.log 参考:

https://www.v3h4t.com/article/1371

5小时前 回答问题

在自己的实现合约里,重载(重新实现)mint 方法,例如:


function mint(address to, uint256 amount) public override {
 require(totalSupply() 

18小时前 回答问题

chainId 由你连接的 provider 确定的。

你的代码是在哪里执行的? 如果是前端执行的, provider 通常是钱包(Metamask)注入的,后端代码,你可以自己指定 provider

18小时前 回答问题

你可以先看看黄皮书在看源码。不过每个人都有自己的学习方法。

geth 你的 EVM 是 golang 实现的, 单个 geth 可以完成智能合约的执行。

1天前 回答问题

这里 两次 token transfer 是合约里函数的实现。于函数的参数无关。

函数及函数的参数 才是你说的 input 数据。

1天前 回答问题

每次授权都是调用不用的token合约的approve, 如果是个人账号进行授权,只能进行多次授权。

不过,有一个情况是用户代理合约,币存放在代理合约里(而不是用户账号下),这样就可以通过,代理合约来实现一次性调用多个 token进行授权。

像 DefiSaver 就是这个思路, 他会帮用户创建一个代码,资产存放在代理中, 可以方便一次和多个合约交互。

2天前 回答问题

这个问题其实是如何在 Solidity 中实现,调用合约的时候发送ETH . 只要在调用函数时, 附加{value: 1eth} , 示例代码:


contract contractA {
    function blah(int x, int y) payable {}
}

contract contractB {
    function invokeContractA() { 
        contractA a = contractA(0x1234567891

2天前 回答问题

区块链对所有人公开,在合约里实现访问控制。

有啥场景解决不了你的问题吗?

2天前 回答问题

如果大家要 悬赏, 直接用我们网站的悬赏功能呢。

也帮助我们创造一点收益

2天前 回答问题

Uniswap 源码:

1、工厂合约:

2、WETH合约:

[

2天前 回答问题

没理解你的自动转移。

Token 本身可以集成了很多功能的 Token。 AToken 也是一个功能 Token。

它可以实现在执行其他调整用户的余额(这个是指你的自动转移么?)

3天前 回答问题

思路挺清楚

监听区块链上每一个交易即可,转出代币,直接调用erc20的 transfer 就可以。

3天前 回答问题

下面的方法简单示意了使用 amount 个 erc20 代币从合约中购买 tokenId 的 NFT:

function buyNFT(uint amount, uint tokenId) public {

    erc20.transferFrom(msg.sender, address(this), amount);

    nft.safeTransferFrom(address(this), msg.sender, tokenId);

}

其实只需要使用分别

4天前 回答问题

Selenium 默认是没有加载插件的

你需要先把 MetaMask 加载进来,参考这个:

4天前 回答问题

time.sleep(2) 肯定是不合理的。

应当使用 wait_for_transaction_receipt

如果已经确定出块,就可以使用 get_transaction_receipt

4天前 回答问题

5天前 回答问题

你可以试试设置 truffle_config.js 设置一下 timeoutBlocks 看看.


networks: {
  development: {
    host: "127.0.0.1",
    port: 8545,
    network_id: "*", // 匹配任何网络
    websockets: true
  },
  live: {
    host: "178.25.19.88", // 用于示例目的的随机IP(不要使用)
    port

5天前 回答问题

没有, 不知道。

换一个浏览器看看

5天前 回答问题

provider 需要使用 websocket 的, 才能监听事件。