如果觉得我的内容对你有帮助,欢迎关注我的推特账号和小红书账号:飞猪聊web3,获取更多web3的安全知识、基本技能和实用资讯
如果需要更具体、系统、有针对性的教程指导,欢迎大家私聊咨询哦
在学习web3知识的过程中,我感觉到对于任何一个知识或者概念的学习掌握都不是一蹴而就、一劳永逸的,而是在不断迭代优化中螺旋上升的。
学习知识的过程就是在编织属于自己的知识网络,一开始获取的都是孤立的知识点,知识点与知识点之间没有建立起链接,就好像一个人刚开始织网,网眼很大,到处都是漏洞,不懂的地方很多;
随着学习的进展,接触内容的增加,获取到了更多新知识,有一些能够跟已有的旧知识点串联在一起,可以补上原有知识网络中的漏洞;有一些是对原有认知的更新,能够纠正了原有知识网络的错误;
慢慢的,围绕这个知识点建立起来的知识网络越来越密,漏洞越来越少;但是随着未来对这个问题获取更多的新认识,那么现在建立起来的知识结构仍要继续进行修补或者重建的过程。
为了更好的说明这个过程,我举个我对加密货币钱包安全认知提升的栗子来说明:
刚接触钱包的时候,我认为造成财产损失的原因就是因为私钥或者助记词的暴露;
在接触了swap等操作后,我认识到了不恰当的授权也会造成损失,这个时候我认为只有支付gas的操作才会存在危险,不支付gas的签名没有风险;
然后我在twitter上发现了很多NFT被骗并不是因为错误的授权,而是因为签名不当,这让我认识到了签名也是存在风险的,但是此时我对签名的认识还比较浅,既不清楚签名的分类,也看不懂签名的内容,对于签名的作用也理解的不到位,也看不懂骗子到底是如何利用签名骗取NFT的。由于签名涉及到很多底层代码的内容,继续研究下去我是心有余而力不足,于是就只记住了不能随便签名的准则,至于为什么不能乱签名的原因还不清楚。
后来我在进一步学习钱包基本原理的过程中,理解了私钥其实就是钱包的实际控制权,通过钱包做出交易的过程实际上就是利用私钥发起签名的过程,记账节点通过公钥来验证签名确实是由地址对应的私钥签署之后,就会对交易进行打包上链。签名的作用有两个:在不暴露私钥的情况下证明地址所有权;同时证明私钥持有者同意了交易内容。
单纯的转账之所以看不到签名,是因为转账的操作是实时的,签名信息直接包含在了交易过程中,用户无法感知,所以意识不到签名的存在。而目前大多数的交易大多都是通过智能合约来根据预先设定好的条件来发起交易,用户需要预先签署好交易内容提交给智能合约,这样当条件实现时,智能合约才能直接发起交易,所以需要进行签名的操作。
当我理解了签名的作用之后,再来阅读twitter上那些因为签名而导致NFT资产损失的案例分析,我就能理解其中的逻辑,而不是之前只知其然(不能随便签名)不知其所以然(为什么不能随便签名)的状态;
然后在学习了一些可读签名读取方法的知识后,我就能看出每次签名到底签了哪些内容。
很多小伙伴会在面对web3世界里纷繁复杂的知识感到毫无头绪,不知从何开始。其实只要认识到任何领域内的知识的学习过程的都不是一蹴而就,而是一个由点及面、慢慢加深的过程后,就完全不必为此感到发愁。
当下接触到任何不懂的内容就直接去搜索学习对应的知识,先掌握个大概,对于不理解的部分可以有针对的去挖掘,也可以暂时不做深究,后面随着学习的深入,背景知识的增加,很多原先不懂的内容会自动的串联起来,实现理解。对我而言,从未知到已知的过程很有一种打怪升级的成就感,大家也可以试试这种学习方式。
关于签名,给大家出个思考题:
大家能看出来下面三种签名为什么安全?为什么危险?在什么情况下危险么?
如果觉得我的内容对你有帮助,欢迎关注我的推特账号和小红书账号:飞猪聊web3,获取更多web3的安全知识、基本技能和实用资讯