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.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
解读CKB版 “闪电网络” Fiber Network:比特币可编程性扩展的另一种思路
作者:NingNing行业周期与宏观金融周期共振,加密行业正处在与 2019 年相似的整体性迷茫之中,现阶段不仅流动性枯竭,叙事貌似也在枯竭。市场不但对 VC 叙事兴趣阙如,对反 VC 的 Meme 叙事也已经疲倦。就像每次哲学危机,人们都会回归柏拉图寻找出路,当加密行业危机时,我们也需要回归比特币、回归中本聪。正如 CKB 生态 RGB++ 协议创始人 Cipher 在最新 Blog 里所阐述的,加密行业需要对以太坊 “链上计算” 的路径依赖进行反思,回归P2P经济学,让计算归于链下,让验证归于链上。因
-
面对NFL球员工会起诉,“退圈”的DraftKings竟主动承认NFT是证券?
作者:Zen,PANews近日,美国国家橄榄球联盟球员协会 (NFLPA) 指控数字体育娱乐和游戏公司DraftKings 逃避了其 NFT 球员许可协议的付款义务。在放弃NFT业务后,涉嫌出售未注册证券而遭到集体诉讼的DraftKings又背上了一起官司。而有趣的是,在与NFLPA的纠纷中,DraftKings的立场似乎已从反驳转变为积极承认“NFT就是证券”。放弃NFT业务:驳回集体诉讼的动议遭到否决今年7月底,Draftkings在给用户的电子邮件中表示:“经过慎重考虑,DraftKings 决定终
-
简析两种最新比特币智能合约实现方案:OP_NET与Arch有何区别?
作者:Cookie过去半个月,OP_NET 与 Arch 这两个比特币主网上的智能合约实现方案引发了较多的讨论。有意思的事情是,OP_NET 这个名字与大家熟悉的 OP_CAT 很像,都以「OP_」开头,具有很强的、让大家认为这哥俩差不多的迷惑性。所以,在开篇要和大家先提一嘴 OP_CAT。首先,OP_CAT 是比特币操作码,从去年开始有以「量子猫」Quantum Cats,也就是「大巫师」Taproot Wizards 的创始人 Udi Wertheimer 为首的社区力量一直在呼喊要「复活」OP_CA
-
争议不断,以太坊正在失去“万链之王”的权威
作者:Climber,金色财经近期围绕以太坊的话题和争议越来越多,不仅 Vitalik 本人需要下场解释观点,就连以太坊基金会也要发布公告来平息社区的质疑声。在本轮牛市周期中,以太坊的表现可谓平平。而美国以太坊现货 ETF 的通过也并未让 ETH 走势如投资者期待般爆发,相反却在币价方面越走越低。这就不免让有着「万链之王」美誉的以太坊逐渐失去投资者和社区的尊重,进而质疑起有关以太坊的方方面面。争议不断,以太坊亟需重塑权威最近一段时间以来社区成员对 Vitalik 言论观点、以太坊基金会乃至以太坊生态系统的
-
从《黑神话:悟空》谈起,GameFi何时能取得真经?
作者:YBB Capital Researcher Zeke前言本文是市场垃圾时间中的一些闲聊,需要对传统游戏市场有一定程度了解。大家可以把这篇文章当作日记或者随想观看,这些只是我在游玩《黑神话:悟空》之后对GameFi的一些粗浅思考,以及对这个赛道未来的看法。一、游戏科学的九九八十一难三天全网销量破千万、Steam玩家同时在线峰值破235万、多家品牌联名周边销售爆火、国家级媒体多次采访、多个游戏取景地可凭游戏通关记录终身免费进入、86版《西游记》YouTube观看量超400万。以上,是《黑神话:悟空》上
-
Gavin Wood:如何防止女巫攻击进行有效空投?
演讲:Gavin WoodGavin 近期一直在关注的女巫攻击(civil resistance)的问题,PolkaWorld 回顾了 Gavin Wood 博士在 Polkadot Decoded 2024 上的主题演讲,想要探究 Gavin 在如何防止女巫攻击上的一些见解。什么是女巫攻击?你们可能知道,我一直在研究一些项目,我在编写灰皮书,专注于 JAM 项目,也在这个方向上做了一些代码的工作。实际上,在过去的两年时间里,我一直在思考一个非常关键的问题,这个问题在这个领域中非常重要,那就是如何防止女巫
-
市场热议,链抽象将成加密新叙事?
2024年,加密货币领域的技术创新持续加速,链抽象(Chain Abstraction)逐渐成为行业内的焦点。链抽象技术的核心在于通过隐藏底层技术的复杂性,让用户能够更加便捷地在多个区块链之间进行操作。传统的区块链技术通常要求用户掌握不同链的操作流程,并需要应对跨链操作中的技术难题,这极大地吸引了新用户的进入。而链抽象的出现,则为这些问题提供了有效的解决方案,成为Web3建设不可忽视的重要一环。01、什么是链抽象及其作用链抽象能够将不同的区块链之间的差异整合在一个统一的操作界面中,使得用户只需一个账户即可
-
今日日报|马斯克和特斯拉赢得“被指控操纵狗狗币”的诉讼;稳定币支付平台Bridge完成5800万美元融资
今日要闻提示:马斯克和特斯拉赢得驳回指控他们操纵狗狗币的诉讼OpenAI和Anthropic已同意将其主要新AI模型在发布前共享给美国政府OKX将上线Hamster Kombat(HMSTR)现货交易X平台纽约总部将于9月13日关闭,预计将迁往得州萨尔瓦多总统布克尔成为《时代》杂志最新一期封面人物稳定币支付公司Bridge完成5800万美元融资数据:MATIC、SHIB、UNI代币头部地址持仓均超50%网龙今年上半年通过出售2.9亿元的加密货币,获利5100万元人民币监管消息美国众议院计划在9月举行多场加
- 成交量排行
- 币种热搜榜