作者分享了自己构建智能合约的个人经历,包括选择以太坊和Solidity工具,以及遇到的挑战和解决方案。作者强调了在智能合约开发中安全性的重要性,并分享了如何通过测试和优化来提高合约的安全性和效率。最后,总结了通过实际操作获得的技能和知识,以及对区块链技术在金融系统中应用的理解。
Photo by The Average Tech Guy on Unsplash
一次关于区块链、智能合约的个人冒险,以及为什么保护它们比安排我的周末计划更难。
老实说——当我第一次听说区块链时,我的第一反应是:
“那是不是比特币崩盘时,新闻里一直在说的那玩意儿?”
但好奇心(以及对错失恐惧症的健康剂量)战胜了我。
在深夜沉迷于 YouTube,以及意识到金融的未来正朝着去中心化方向发展之间的某个时刻,我决定:
“我要从头开始构建一个智能合约。像个成年人一样。”
于是,我开始了进入 以太坊、Solidity 的奇妙世界的个人旅程,并努力避免意外地创建下一个 DAO 黑客攻击 ;-)
最终,我获得了区块链技术专业的研究生文凭**。
完成文凭后,
我对分布式系统、共识算法和智能合约基础知识有了扎实的理论理解。
但说实话——教科书上的再多图表也无法真正让你为部署你的第一个智能合约的那一刻做好准备……以及不小心因为一个简单的拼写错误而花光你所有的测试以太币。
这个项目是我将理论变为现实的方式。 一次超越纸上谈兵的实践之旅——并真正构建一些可以工作的东西(并在沿途克服一些错误)。
由于我在银行业工作并且热爱安全系统,我希望我的 POC 不仅能工作——
而且要安全、可扩展,并且不会不小心将想象中的数百万美元发送给陌生人。
我的个人使命:
构建一个用于简单资产代币化的智能合约——安全地。
奖励任务:
真正了解我在做什么,而不仅仅是从 Stack Overflow 复制粘贴。
起初,我的代码看起来像这样(在课程期间):
pragma solidity ^0.8.0;
contract AssetToken {
string public assetName;
address public owner;
constructor(string memory _name) {
assetName = _name;
owner = msg.sender;
}
}
翻译:
我基本上为区块链做了一个 Hello World。
胜利之舞?还没到时候。
一旦我编写了更多的函数(转移所有权、查看详细信息等),
我开始阅读关于 重入攻击、溢出 和 比我更聪明的黑客的恐怖故事。
我使用 SafeMath 来避免溢出问题。
我添加了像 onlyOwner
这样的 修饰器 到敏感函数。
我像在网络安全期末考试周一样练习 防御性编程。
a. “如果他们倒着拼写自己的名字,任何人都可以转移所有权。”
b. “合约认为 0 是一个有效的新所有者。”
故事的寓意:
永远不要相信你的第一次部署。或者你的第二次。
理解 Gas 优化:
我不小心编写了一个非常昂贵的函数,运行它的成本会超过我的 Netflix 订阅费用。
管理钱包和私钥:
丢失了一个测试钱包。仍然在为它默哀。
部署到真实测试网:
事实证明,测试网是真实的网络,有真实的延迟,以及关于耐心的真实教训。
a. 一个可工作的、相对安全的 资产代币化智能合约
b. 对 区块链安全原则 的更深入理解
c. 强烈希望在接触任何实际环境之前 始终审计你的合约
[User Interface (MetaMask Wallet)]
⬇️
Smart Contract (Deployed on Testnet)
⬇️
Blockchain Ledger (Ethereum Public Chain)
我不只是构建了一个智能合约——
我构建了一套新的技能:
今天,我可以自信地说,我了解区块链如何融入 现实世界的金融系统 ——将我在区块链技术方面的正规研究生文凭与真实的实践学习相结合,以及小错误如何成为价值百万美元的新闻头条。
最棒的部分是?
这一切都始于一个在深夜作出的学习新东西的随机决定。
- 原文链接: coinsbench.com/how-i-wen...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!