Solidity:如何使用chatGPT创建/优化/审计智能合约
我知道这是一篇很长的文章,但它会改变你的编码方式,所以慢慢来。
现在是凌晨 5 点,我花了 16 个小时在chatGPT 上。现在,我在这里写一篇文章,因为如果我不分享这个,我就无法入睡。
这是一个关于如何与chatGPT进行交互的概念验证,基于我的经验。我希望在阅读本文之后,越来越多的开发者开始撰写文章,探讨我们应该如何讨论人工智能。

人工智能有可能大大改善智能合约的开发和执行。以下是应将AI用于此目的的几个原因:
AI可以帮助自动化创建智能合约的过程,减少人类干预的需求和潜在的错误风险。AI可以协助验证和确认智能合约,确保它们准确无误,满足必要的标准。
AI可以帮助识别和解决智能合约潜在的漏洞,提高其安全性,减少黑客或其他攻击的风险。
AI可以协助监控和执行智能合约,确保它们按照既定计划执行,并且任何争议都能够快速而高效地解决。
总的来说,使用AI来开发和执行智能合约具有提高它们准确性、安全性和效率的潜力,使它们成为一种更可靠和有效的工具,适用于各种应用场景。
(*此文本由AI自己生成)
现在,如果你问这个有趣的家伙,他会说,“你可能需要咨询一位软件开发人员……”但是等一下,chatGPT先生,我就是软件开发人员啊!这意味着我在问错问题了!
在询问了24,173,431个问题之后,我意识到了一个至关重要的问题。通过花时间了解AI“思考”的方式,你可以提高与它的沟通并得到更有用的回答。这可以节省您的时间、减少挫败感,并避免潜在的智能合约开发项目中出现的障碍。因此,不要犹豫,花点时间学习如何有效地“与chatGPT交流”,你将踏上成功之路。

因此,通过提出正确的问题,它说“兄弟,我可以帮你”。

这个AI家伙是神一样的。它可以为你编写代码,优化智能合约,审计智能合约,编写单元测试,编写脚本,前端,一切
旅程开始了...
我将介绍一些用例以及我如何与它讨论以解决我的技术问题:
从头开始生成智能合约
我的第一次尝试是创建一个带有非常特定组件的投票应用程序。我想要一个:
- Solidity 智能合约
- 使用 Pragma 版本0.8.0
- 投票应用程序
- 具有创建投票会话的所有者

这是 AI 生成的代码:
pragma solidity 0.8.0;
contract Voting {
// The address of the contract owner address public owner;
// The name of the voting session string public votingSessionName;
// The total number of votes uint256 public totalVotes;
// The mapping of voters to their vote counts mapping (address => uint256) public votes;
// The constructor that sets the owner of the contract constructor() public { owner = msg.sender; }
// The function that allows the owner to create a new voting session function createVotingSession(string memory _votingSessionName) public { require(msg.sender == owner, "Only the owner can create a voting session."); votingSessionName = _votingSessionName; }
// The function that allows a voter to cast their vote function vote() public { votes[msg.sender]++; totalVotes++; }
}
这是来自AI的信息:

现在我想要更多。我想使用Openzeppelin作为所有权,我想有签名进行投票。

AI理解错误的签名验证,所以我不得不坚持一点。
以下是我们的讨论:

以下是AI生成的代码:
pragma solidity 0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/ownership/Ownable.sol";
contract Voting is Ownable {
// The name of the voting session string public votingSessionName;
// The total number of votes uint256 public totalVotes;
// The mapping of voters to their vote counts mapping (address => uint256) public votes;
// The function that allows the owner to create a new voting session function createVotingSession(string memory _votingSessionName) public onlyOwner { votingSessionName = _votingSessionName; }
// The function that allows a voter to cast their vote function vote(bytes32 _signature) public { require( _signature == keccak256(abi.encodePacked(votingSessionName)), "Invalid signature." ); votes[msg.sender]++; totalVotes++; }
}
以下是代码下方的文本:

嗯,那关于一些元交易呢:

但它有点失败,所以我以一种 AI 能够理解我要求的方式重新表述:

*AI老哥说“你是对的”,我笑死。
这是代码:
pragma solidity 0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/ownership/Ownable.sol";import "https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/GSN/Forwarder.sol";
contract Voting is Forwarder, Ownable {
// The name of the voting session string public votingSessionName;
// The total number of votes uint256 public totalVotes;
// The mapping of voters to their vote counts mapping (address => uint256) public votes;
// The constructor that sets the owner of the contract and the Forwarder contract address constructor(address _forwarder) public { owner = msg.sender; Forwarder(_forwarder); }
// The function that allows the owner to create a new voting session function createVotingSession(string memory _votingSessionName) public onlyOwner { votingSessionName = _votingSessionName; }
// The function that allows a voter to cast their vote function vote() public { require( forwarderCanCall(msg.sender), "This function can only be called through the Forwarder contract." ); votes[msg.sender]++; totalVotes++; }
}
以下是文字:

等等...现在,这只是一个例子,证明如果你一点点告诉chatGPT正确的单词,你只需要写文本,而不是代码。我惊呆了。
优化智能合约
我拿了一个由我编写的智能合约,该合约正在进行中,其要求与上面生成的投票应用程序类似,我告诉chatGPT对其进行优化。

*我写了“优化这个智能合约”+粘贴原始代码。

我重置了线程,再次问他。回应:

但是我遇到了这个错误,所以我无法发布代码(ChatGPT 中一个非常令人沮丧的错误):

总之,如果你有正确的知识,人工智能可以给你优化代码的好主意。我还尝试了“删除冗余代码”和“重写注释”。我让你自己试试。
单元测试

*文本+复制粘贴原始代码。

我认为因为它必须编写大量代码,所以出现了神秘的“network error”。
第三次当我按下“重试”时,它给了我这个响应。我认为它某种程度上知道这是太多的代码,并向我提供了如何解决的指示。



以此类推,AI写了所有的测试。
审计

响应:

哼!所以我仍然有用。谢谢聊天!. . . . .开玩笑我,我只是问错了!

带有一些错误标志但仍然是响应的响应:

让我们看看它对重入的看法:

我又试了一次:

很酷的信息。谢谢,人工智能伙计。
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
比特币「IPO 时代」到来:横盘不是终点,是增持的起点
比特币 1% 配置的时代已然落幕。撰文:Matt Hougan,Bitwise 首席投资官编译:Saoirse,Foresight News比特币的横盘震荡,恰恰标志着其「IPO 时刻」已然到来。为何
-
价格之外的真相:美国如何没收陈志的比特币?
价格在反映仓位,而司法文件在陈述事实。撰文:Daii刚刚, 比特币再一次跌破了 10 万美元大关。那根长阴线,把社媒上的音量拧到最大:有人说「算法被破,所以资金出逃」,也有人把「在美托管」直接翻译成「
-
早报 | 美股收盘三大股指齐挫;灰度宣布免收 Solana ETF 管理费,直至基金资管规模达 10 亿美元;Ripple 以 400 亿美元估值完成 5 亿美元融资整理:ChainCatcher 重要资讯:美股收盘三大股指齐挫,纳指大跌 2% 今晚 ADP 成美政府停摆下的稀缺风向标,本周非农仍料将缺席 灰度宣布免收 Solana ETF 管理费,直至基金资管规
-
加密早报:HyperLiquid 六大高杠杆巨鲸均大额亏损,Monad 将于 11 月 24 日启动主网
Ripple 完成 5 亿美元融资,Fortress 和 Citadel Securities 领投。作者:深潮 TechFlow昨日市场动态“小非农”人数高于预期据金十数据报道,美国10月ADP就业
-
从链上速度到资产规模:一场公链叙事的转向一个行业的叙事,往往在最关键的节点上完成转向。过去几年,区块链世界的竞争焦点始终停留在“谁更快”:TPS、Gas 费、延迟——这些指标几乎成了衡量公链优劣的唯一标准。 但如今,风向正在悄然改变。随着
-
如何使用 BNB Chain 上的已有协议释放 RWA 的万亿级金融价值?最近,Binance旗下基金@yzilabs 发布了一个围绕BNB价值的生态研报。 看完这个研报我有三个感受: 1、BNB集平台币、公链Token、生态权益凭证为一身,是当下少有的有价值支撑的资产。
-
Pendle、Polymarket 等项目分析- 这一个暴跌,我心里都没起来多少波澜。 这是10月13日《史诗级暴跌在时间长河里也只是噪音》一文后一位读者的留言。 能有这种感觉我认为就很对了。 我所有写的关于加密生态定投的文章和关于项目判断用价值
-
比特币暴跌背后:ETF 退潮、机构撤资与聪明钱抛售CoinW 研究院1.比特币暴跌与市场共振 11 月 4 日,加密市场遭遇剧烈冲击,整体陷入低迷。比特币价格一度跌破 10 万美元关口,最低下探 9.9 万美元,这是自年内高点以来最显著的一次回调。与
- 成交量排行
- 币种热搜榜
Momentum
OFFICIAL TRUMP
Aster
泰达币
以太坊
比特币
Solana
USD Coin
瑞波币
币安币
First Digital USD
狗狗币
大零币
达世币
Sui
ZEN
ICP
OKB
FIL
AR
LPT
MINA
BSV
EOS
DYDX