jackson
jackson

西藏 - 山南 注册于 2020-01-07

https://medium.com/@jackson-coming

向TA求助
696学分数
253 贡献值
20个粉丝

最近动态

2022-03-23 17:30 回答问题

这个是网络连接问题,可能是防火长城在作怪,试试刷新dns缓存,windows可以试试运行下面的命令试试

ipconfig /flushdns

如果不行,可以尝试在浏览器设置远程DNS解析

2022-03-23 14:41 发表了文章

2022-03-22 10:35 发表了文章

2022-03-20 13:38 回答问题

从代码上看,只有接收代币地址参数有差异,根据uniswap2的代码,有两种可能

  1. 代码所在的合约是token1或者token2,此时失败的消息将是UniswapV2: INVALID_TO
  2. 兑换的目标token是eth,但是代码所在的目标合约没有接收eth的receive方法。

以上是可能的原因,具体情况,把失败消息发出来就知道了

2022-03-20 13:26 回答问题

核心还是合约,不过用solidity的话,语法和js很像,因此你学习起来应该很快,学习路线可以参考这篇文章: 以太坊学习路线和资源汇总 | 登链社区 | 深入浅出区块链技术 (learnblockchain.cn)

这篇文章几乎涵盖了所有你需要的内容,包括工具,有op了这些基础,你应该就知道开发流程了,除了正常的软件开发流程外,一个DAPP通常有如下工作

  1. 交互设计,UI设计
  2. 合约结构设计,关键数

2022-03-19 10:28 回答问题

有很多环节可以做这件事,只是快慢有所不同,根据交易发出的流程,可以分析出有以下几个环节

  1. 发交易的数据被截获。这个可能性较低,确保自己的服务器没有木马,连接用https就可以杜绝。
  2. 接收交易的节点。我们通常是用别人提供的节点,例如infura,理论上他们是最早得到交易信息的,如果有人跟他们合作,获取交易信息,那就有很大的又是。特别是BSC,基本上都是连那几个节点发交易。
  3. 矿池。节点收到交易后,理论上回广播出来,这样很快所有的矿池都能收到交易。因此跟矿池合作可以很快的拿到交易,得到交

2022-03-18 14:36 回答问题

先要确定是要合约代码还是什么,如果是合约代码,bsc和eth基本是相同的,可以公用,这个确定了之后

然后就是质押挖矿算法,考虑质押时间不同,质押期内收益增量不同,则这个算法会有些复杂,但是这个已经有解决方案了,这里有一个不错的实现: [https://github.com/Computable-Finance/CoFiX-V2.1/blob/main/contracts/CoFiXVaultForStaking.sol](https://github.com/Computable-Finance/C

2022-03-18 10:29 回答问题

正常情况下,交易发到节点的,会先进行预先检查,发现一些明显不能成功的交易,就会被踢出,这些检查就包括是否有足够的gas费用,详情见这里:

交易入队列 :: 以太坊技术与实现 (learnblockchain.cn)

但是,预先检查失败并不代表一定会失败,这就包括你说的这种情况,前面的交易先账号转账,使得后面的交易能够执行。

然而,通常的节点并不会允许你这样发

2022-03-16 17:02 回答问题

Pancake的交易对都是从Factory合约创建出来的,也可以从Factory合约获取,Facotory合约代码在这里

https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/PancakeFactory.sol

关键代码:

2022-03-16 10:37 回答问题

内存数组不能push,可以先定义一个对应长度的数组,然后设置,如下:


// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.0  SingleGoods) goods;
    }

    mapping(uint256 => City) citys;

    // 表示某city的某goodsid是否存在。第一个uint是cityid,第二个是goodsid
    mapping(uint256 => map

2022-03-15 09:31 回答问题

这是一个系统工程,首先需要有一定的合约编程基础,然后就是需要确定你们产品的具体逻辑。

合约编程基础可以参考这篇文章 以太坊学习路线和资源汇总 | 登链社区 | 深入浅出区块链技术 (learnblockchain.cn)

然后就是质押挖矿,这个要看具体逻辑,如果考虑质押时间不同,质押期内收益增量不同,则这个算法会有些复杂,但是这个已经有解决方案了,这里有一个不错的实现: [https://github.co

2022-03-14 16:06 发表了文章

2022-03-14 14:19 回答问题

根据错误信"TransferHelper:TRANSFER_FROM_FAILED"可知是在转账时发生了错误,而且错误是从TransferHelper.safeTransferFrom()中发出的,代码如下:


function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(addr

2022-03-13 16:58 回答问题

UniswapV2资金池的代码里面只有这一段的末尾处有这个错误信息


// this low-level function should be called from a contract which performs important safety checks
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
    require(amou

2022-03-13 16:45 回答问题

你这个问题比较初级,看来是初学者,直接给你代码,能够编译的,里面有一些问题还需要你仔细领会


// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.0  SingleGoods) goods;
    }
    mapping(uint256 => City) citys;

    struct SingleGoods {
        string name;
        uint256 price;

2022-03-11 10:56 回答问题

根据你这个交易的截图看,交易是因为实际使用的gas 超过了给出的gasLimit限制导致的。

之所以会出现这种情况,是因为Ethereum再估算gas消耗时,是根据当时的合约状态来计算的,但是,合约的状态是一直在变化的,引起变化的可能有多种:

  1. 将值为0的状态改变为非零,消耗2万gas。将非0改为0,会返还1.5万gas
  2. 一些循环,或者条件分支,是根据状态来确定的

上面两种,都有可能因为前面发的交易而被改变,而预估时的状态,到交易打包时已经发生变化,导致上面两种可能影响gas

2022-03-10 14:24 回答问题

你这是说的Uniswap资金池合约的方法吧,根据合约代码,可以看出reserve0reserve1分别对应创建资金池时指定的交易对的token0和token1,token0和token1是public的字段,因此可以直接从这两个字段读取,获得对应的代币地址,使用代币地址在etherscan上可以查看齐对应的代币信息

2022-02-23 11:34 发表了文章

2022-02-22 10:12 发表了文章

2022-02-16 17:02 发表了文章