前言
最近在做钱包和交易的一些事情,前些天在部署以太坊智能合约的时候,遇到一个问题,最终折腾了许久,问题解决了,并且引发了我的一些思考,特此和大家分享交流一下。
我遇到的问题
通常在dapp开发过程中,我们会把合约部署到ETH测试网络中,通常的选择有2种,Ropsten和Rinkeby。第一次部署的时候,我是把合约部署到了Ropsten
,按理说只要部署合约时需要的Gas费用合适了(一般设置为8Gwei即可,1eth=10^9Gwei),在1分钟以内就可以部署成功,然而我等了10分钟左右依然处于Pending
(等待)状态,很显然这是不正常的,于是我把合约删除,重新提高费用,等了10分钟左右依然没有任何响应。
这种情况必然是ETHRopsten
网络出现了拥堵,排队待打包的交易过多导致的。于是我切换到Rinkeby
测试网络试试,结果同样的费用,同样的操作,不到30s合约就部署成功了。
这个时候,我突然反应过来了,原来Ropsten
用的是POW共识机制,它是很容易受到垃圾攻击而造成网络拥堵的;而Rinkeby
用的是POA共识机制,它是不会受到这种攻击的。这一点,其实在之前我就了解过的,还特意写过一篇文章以太坊测试网络testNet汇总,但是为什么我在遇到这个问题的时候,迟迟没有反应过来呢?
我的反思
明明这个理论或者道理在之前我是听说过的或者了解过的,但是当真正遇到事情的时候,我对它又好像没什么太深刻的印象或者迟迟反应不过来呢?
我相信很多朋友都遇到过类似的境况,而我也遇到过多次,但是好像从来没有认真思考过这个问题。目前我好像找到了一丝答案,往往我们看到的或者从大佬那里听说的一些理论是别人的一些经验,是这些人经历了很多事情,反复验证之后得出的结论,而我们很多人通常是“拿来主义”,虽然在当时看到或者听到的时候,内心是非常激动且感触很深的,甚至在内心告诫自己,我以后会这么做,在遇到类似的情况,我不会犯这种错误;然而人的大脑是健忘的,如果过一段时间真的遇到这种情况,你大概率是反应不过来的,更不用说按照大佬的那一套去执行。
究其更深层次的原因,无非就是人往往是对自己自己亲身经历过的一些比较重要的事情才会有很深刻的印象。我们看到的或者听说过的一些理论,如果你没有类似的经历,你的感受是不会特别深刻的,也就是说在人生的不同阶段,你对一句话的理解是完全不一样的。说到这里,我也貌似知道该怎么做了。
当你看到或者听到一个让你心动的理论或者道理时,你应该在最近的一段时间去寻找里面提到的那个类似的场景,去亲身感受一下,再去验证一下那个理论是否切实可行(或许需要结合自身的特点作出一些调整);或者说你去找找有过类似经历的人,和他多聊一聊,听听更多的细节,多问一问;再不济,你也要把那个理论完完整整的多看几遍,反复琢磨,再去网上查找更多的资料来对比,琢磨,只要这样,你的印象才会深刻,在你后续遇到这种情况多时候,大脑才能及时有所反应。
接下来,我会陆续链接几位高认知的朋友,去看看如何有效的解决我这个问题,后面有所进展,会和大家分享。