![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
区块链
文章平均质量分 56
”PANDA
努力是最不值得被炫耀的东西
展开
-
链下签名实现
比如我们在使用 opensea 的时候,经常会提示我们进行数字签名,如下图:用户进行 sign 确认,即用自己的私钥对一段数据进行签名,得到一个 signature,其他人可以使用你私钥对应的公钥,对 signature 进行验证,从而证明你是私钥的持有者。验证身份:验证私钥持有人完整性:防止数据被篡改不可否认:持有人无法否认签名我们在区块链中发起的每一笔交易(转账、对合约写操作)都是使用私钥签名过的,矿工会在打包前对每笔交易进行校验。具体逻辑如图:使用私钥进行签名,公钥进行验证。原创 2022-12-30 23:12:04 · 2087 阅读 · 0 评论 -
世界杯竞猜项目Dapp-第五章(合约升级)
目前主流有三种合约升级方法本次采用 transparent 方式,具体实现思路即,引入一个代理合约 Proxy(蓝色),用户仅与这个代理合约进行交互,由代理合约去与业务合约进行交互,因此在业务合约发生变化(升级)的时候,用户无感,并且历史数据也能够保留下来,如下图所示:既然业务合约可以随意切换,那用户数据就只能存储在代理合约中了,在实际进行业务处理时,数据读写都是从代理合约来的,即数据与逻辑分离,其实现的核心便是 delegatecall 关键字。原创 2022-12-25 19:53:36 · 1723 阅读 · 1 评论 -
世界杯竞猜项目Dapp-第四章(subgraph)
这里对 graph node 与 subgraph 关系进行说明,在 graph node 上可以部署多个 subgraph,每个 subgraph 可以服务多个不同的项目。具体选项跟随引导程序填写,选择:网络 -> 名称 -> 合约地址 -> 合约名字,引导程序会自动在网络上拉取 ABI(前提是我们 verify 了,否则需要自己填写)增加扫块起点 startBlock 为当前合约所部署的块,如果不增加,则从最初块开始扫,效率低。subgraph 项目结构。原创 2022-12-14 13:16:31 · 638 阅读 · 0 评论 -
Error in plugin @nomiclabs/hardhat-etherscan: Failed to send contract verification request
这个问题困扰了我好久,其实就是代理的问题,我们的代理只支持浏览器,并不支持终端代理,所以当时选择第一的解决办法就是如何设置终端代理或者系统全局代理(修改 hosts 文件之类的),但发现并没有用,最后找到的解决办法:因为我使用的 Mac,所以直接下载的 clashX Pro,连接代理后,直接使用增强模式就可以了。如果是 windows,可能麻烦点,下载 Clash for Windows,打开 TUN 模式,CFW 需要安装依赖包,自行编辑配置文件才能让 TUN 模式生效。原创 2022-12-14 12:41:33 · 551 阅读 · 0 评论 -
世界杯竞猜项目Dapp-第三章(ERC20)
ERC20 是标准的以太坊 Token 协议,它也是一个合约代码,只要在该合约内部实现了特定的 6 个方法,就会被系统判定为代币合约,具体总结为:6 个必要接口,2 个必要事件,3 个可选接口原创 2022-12-13 15:56:58 · 522 阅读 · 0 评论 -
如何在vscode、remix中结合hardhat编译部署合约
一般简单的测试学习我们可以用 remix,更多时候是用专业的 vscode IDE 编写合约,remix 现在要连接到我们刚创建的本地合约项目,执行以下命令启动后台。安装完之后直接打开合约项目文件夹就可以了,比如这里的 suchas,然后在 vscode 中安装 solidity 插件,以支持合约编程。在 contracts 文件夹中创建 ***.sol,F5 编译合约,接着在 tests 文件夹中编写。首先创建 npm 空项目,注意这里要选择合约项目对应的文件目录,比如这里的合约项目是 suchas。原创 2022-12-08 22:48:35 · 1786 阅读 · 0 评论 -
世界杯竞猜项目Dapp-第二章(hardhat部署合约)
根本之一可能是电脑设置的代理只针对浏览器,终端没有设置代理,这个问题我并没有真正解决,虽然我尝试在 hosts 文件中添加了地址映射,解决了连接超时的问题,但最后结果就像上面这样报另外一个错误,不知道如何解决了,如果有解决了的小伙伴可以留言。最后采取的方案是直接在。将 Worldcup.sol(上节编写的合约)添加到 contracts 目录,并进行编译。然后在项目根目录下添加 .env 文件,以配置连接用到的 key,先获取 key。编写完,运行单元测试:npm hardhat test,效果如下。原创 2022-12-08 15:49:00 · 829 阅读 · 0 评论 -
如何在 goerli.etherscan.io 上验证合约
Error in plugin @nomiclabs/hardhat-etherscan: Failed to send contract verification request.这个问题原因之一可能是代理只针对于应用可以使用,终端并没有走代理,我尝试过修改 hosts 地址映射,但我最后也没有解决这个问题,如果有小伙伴解决了,欢迎留言~接下来就来说另一个方案,在部署完合约后,直接在 goerli.etherscan.io 上验证合约。原创 2022-12-08 15:35:07 · 431 阅读 · 0 评论 -
Error: could not detect network (event=“noNetwork“, code=NETWORK_ERROR, version=providers/5.7.2)
今天在 hardhat 中部署合约时碰到了这个问题,算是一个粗心的问题吧,特此记录一下,如图:出现该问题的原因竟然是配置网络 url 时应该是 ``,而我用成了 ‘’,导致一直连不上原创 2022-12-08 00:46:43 · 2519 阅读 · 0 评论 -
Invalid account: #0 for network: goerli - private key too short, expected 32 bytes
今天在 hardhat 中部署合约时碰到该问题,即:Invalid account: #0 for network: goerli - private key too short, expected 32 bytes,如图:提示私钥太长,太短的问题我都碰到了,特此记录一下首先第一个可能出该问题的地方,私钥指的是你 goerli 测试网钱包的私钥,如图:第二个可能出问题的地方是,需要在项目根目录下创建一个 .env 文件以管理各种 key,.env 文件中代码具体格式如下,注意结尾是不加冒号的,我原创 2022-12-08 00:39:48 · 523 阅读 · 0 评论 -
世界杯竞猜项目Dapp-第一章(合约开发)
最近卡塔尔世界杯如火如荼,让我们一起来尝试利用 solidity 语言做一个世界杯竞猜的 Dapp 实战项目,本次实战学习主要参考:https://github.com/dukedaily/solidity-expert,我会针对原始项目做更详尽的注解,持续更新中…原创 2022-12-04 20:09:15 · 1246 阅读 · 0 评论 -
区块链交易明细中各字段的含义
区块链交易中 gas 费用到底如何计算的原创 2022-11-20 13:47:26 · 2500 阅读 · 0 评论 -
Solidity 基础知识
Solidity 基础知识原创 2022-10-17 21:59:35 · 1402 阅读 · 0 评论