admin 发布的文章

昨天在检查新上线的系统时发现了大量的 replacement transaction underpriced 错误。google了一下,ETH这个错误的意思是gas price太低了,主要可能性是nonce重复了,一个新增交易于是变成了一个更新交易,而更新交易需要比老交易更高的gas price,但在私链上通常一个固定的操作gas price都是一致的。
但nonce为什么会重复呢?

nonce, err := client.PendingNonceAt(context.Background(), myaddress)

查了文档,PendingNoceAt它是根据当前的链的高度和用户地址来生成的,换句话说,同一个用户多个交易试图打包在同一个区块中,PendingNonceAt就会重复。
再看一下更详细的日志,马上就明白了错误出现的原因。大概是前端有bug,它在发起一个建立用户的操作时,在毫秒级重复发起了几次,所以,只有第一次成功,后面全部失败,不过这个失败在功能上是无所谓的,只是重复的操作失败了。
一下理解了另一个系统的同样的问题,当时一直找不到答案,就是在一个批量的链操作时,如果超过了10次/秒,就会随机性的出现失败,为解决问题我只能把它强行限制在5次/秒。 现在知道了,那是因为链的性能,在高于10次每秒时,就会出现几个交易打包在了一个区块中引发nonce问题。

err.jpg

接手了我爸的家谱网的运维后(*),蛮意外的,统计里面每天的IP数请求数都好高,不过对比文章的点击数互动数等明显不正常。
一直不想打击自己的热情, 不过今天终于还是忍不住看了一下log,好吧,原来是疯狂的amazonbot,它家在准备搞AI,全网到处扫。你扫就扫吧,你别盯着几个一样的链接从早扫到晚啊,而且就算是404也无休无止的扫。
看到这个水平,以后amazon的AI出来了,我猜连文心一言也比不过。

127.0.0.1 - - [15/Mar/2024:16:42:09 +0800] "GET /upfiles/yuanliu/2010/zbsearch/haiwai/zbsearch/zbsearch/lailuofu2008/zbsearch/lailuofu2008/luos_oklink.asp HTTP/1.1" 404 14 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
127.0.0.1 - - [15/Mar/2024:16:42:12 +0800] "GET /upfiles/yuanliu/2010/zbsearch/haiwai/zbsearch/zbsearch/lailuofu2008/zbsearch/zbsearch/zbsearch/index.ASP HTTP/1.1" 200 64194 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
127.0.0.1 - - [15/Mar/2024:16:42:16 +0800] "GET /upfiles/yuanliu/2010/zbsearch/haiwai/zbsearch/zbsearch/lailuofu2008/zbsearch/zbsearch/haiwai/taiguo-1758.htm HTTP/1.1" 200 64194 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
127.0.0.1 - - [15/Mar/2024:16:42:20 +0800] "GET /upfiles/yuanliu/2010/zbsearch/haiwai/zbsearch/zbsearch/lailuofu2008/zbsearch/zbsearch/haiwai/admin_index.asp HTTP/1.1" 404 14 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
127.0.0.1 - - [15/Mar/2024:16:42:25 +0800] "GET /upfiles/yuanliu/2010/zbsearch/haiwai/zbsearch/zbsearch/lailuofu2008/zbsearch/zbsearch/haiwai/luos_oklink.asp HTTP/1.1" 404 14 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
127.0.0.1 - - [15/Mar/2024:16:42:27 +0800] "GET /upfiles/yuanliu/2010/zbsearch/haiwai/zbsearch/zbsearch/lailuofu2008/zbsearch/zbsearch/haiwai/UserLostPass.asp HTTP/1.1" 404 14 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
127.0.0.1 - - [15/Mar/2024:16:42:28 +0800] "GET / HTTP/1.1" 200 64202 "-" "Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"

*以前的系统是,win2008+asp+access,实在太过于古老了,而且用的阿里的99机,2C2G还限制cpu,只配跑32位的win2008,太扯了,这性能和安全性无从谈起。 所以,我脑子一热,就把它改写成了 linux+go+mysql。 不过网站内容本身,还是要等我哥退休后去弄了,现在就这样先维持了。