![](https://img-blog.csdnimg.cn/20201124151337438.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
区块链应用
文章平均质量分 68
以实战为线索,逐步深入以太坊开发各个环节,注重实际操作及智能合约的开发与使用,逐步提升对区块链的理解和动手能力,实现区块链的商业应用!
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
wonderBlock
这个作者很懒,什么都没留下…
展开
-
第158篇 合约安全-selfdestruct
solidity 可以通过调用 selfdestruct从区块链中删除合约;将合约中存储的所有剩余Ether发送到指定地址。恶意合约可以使用 selfdestruct来强制向任何合约发送以太币。原创 2023-01-02 14:14:25 · 673 阅读 · 0 评论 -
第157篇 合约安全-随机数
智能合约的开发中常常会用到随机数,目前来说常见的随机数获取有两种:使用区块变量生成随机数,使用预言机来生成随机数。这两个函数生成的随机数的结果是相同的,从而攻击者可以顺利通过 if(_guess == answer) 判断得到奖励。这个合约是一个猜数字赢 ether 的游戏,部署者使用上个区块的区块哈希和区块时间作为随机数种子生成随机数。并将生成的随机数传入,由于从 Attack.attack() 生成随机数到调用。原创 2023-01-02 14:09:42 · 1201 阅读 · 0 评论 -
第156篇 用智能合约给自己做个钱包
本文使用 solidity 合约实现私人钱包功能;原创 2022-12-18 11:55:49 · 720 阅读 · 0 评论 -
第155篇 英格兰拍卖
本文介绍英格兰拍卖,讲解如何通过 solidity 实现交易 标准的 。英格兰拍卖,是指在拍卖过程中,拍卖人宣布拍卖标的的起叫价及最低加幅价,竞买人以起叫价为起点,由低至高竞相加价,最后产生最高应价者;原创 2022-12-08 11:22:36 · 487 阅读 · 0 评论 -
第154篇 Solidity 中众筹的实现
用户创建活动;众筹 ERC20 或 Ether 两类合约。原创 2022-12-08 11:21:10 · 244 阅读 · 0 评论 -
第153篇 Solidity 中支付通道的实现
支付通道允许参与者重复 transfer Ether 。以下是本合约的使用方法:这被称为单向支付通道,因为支付只能从 Alice 向 Bob 单向进行。双向支付通道允许参与者 Alice 和 Bob 均可以重复 transfer Ether。付款可以双向进行,Alice 支付给 Bob,或 Bob 支付给 Alice。原创 2022-12-03 12:37:42 · 246 阅读 · 0 评论 -
第152篇 Solidity 中的 Call
使用 for 循环和 staticcall。函数发送 ether 时建议使用的方法;是一个与其他合约交互的低级函数;但这不是调用现有函数的推荐方法;合约可以通过两种方式调用其他合约。,用一个交易调用多个函数的示例;使用 delegatecall。的 delegatecall。的存储、msg.sender。通过调用 fallback。和 msg.value。聚合多个查询的合约示例;测试 MultiCall。是一个类似于 call。代码,但使用合约 A。原创 2022-12-02 23:50:23 · 553 阅读 · 0 评论 -
第151篇 Solidity 中的数组(Array)
solidity 中的数组(Array)大小可以是固定的,也可以是动态的;原创 2022-11-30 17:44:27 · 329 阅读 · 0 评论 -
第20篇 使用remix部署智能合约
本文环境:操作系统:windows 64;节点版本:Geth1.9.14;node版本:v10.14.0Remix 是一个开源的智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。Solidity 是以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约。本文希望将一个很简单的代币合约,部署在POA联盟链网络上,并测试它的功能。原创 2020-07-10 17:46:59 · 3440 阅读 · 1 评论 -
第145篇 Hardhat 开发环境
Hardhat是以太坊最流行的开发环境,它可以帮你编译和部署智能合约,并且提供了Hardhat Network支持本地测试和运行Solidity。本篇介绍如何安装Hardhat,使用Hardhat编写并编译合约,并运行简单的测试。原创 2022-11-06 15:03:18 · 334 阅读 · 0 评论 -
第143篇 solidity 中的 error-revert
error 是 solidity 0.8.4 版本新加的内容,方便且高效(省gas)地向用户解释操作失败的原因。人们可以在contract之外定义异常。原创 2022-11-06 14:08:31 · 227 阅读 · 0 评论 -
第142篇 合约安全-重入锁
在例子中,黑客利用了回退函数在目标合约进行ETH转账时进行重入攻击。实际业务中,ERC721和ERC1155的和安全转账函数,还有ERC777的回退函数,都可能会引发重入攻击。建议是用重入锁保护所有可能改变合约状态的external函数,虽然可能会消耗更多的gas,但是可以预防更大的损失。本文主要合约来自网络,仅供参考;原创 2022-10-28 13:56:14 · 2396 阅读 · 0 评论 -
第141篇 Solidity 中的 Try Catch
在solidity使用try-catch只能用于外部合约调用和合约创建。如果try执行成功,返回变量必须声明,并且与返回的变量类型相同。原创 2022-10-18 13:38:31 · 541 阅读 · 0 评论 -
第140篇 solidity 中的异常
本文介绍solidity 中三种抛出异常的方法:error,require和assert。写智能合约经常会出bug,solidity中的异常命令帮助我们debug。原创 2022-10-18 13:06:28 · 514 阅读 · 0 评论 -
第139篇 简单的分成合约
开源合约库有关于 ERC20 分成的合约,本文附在最后;本文合约在其基础上完成,该合约允许将ETH按权重转给一组账户中,进行分成。原创 2022-10-17 23:32:02 · 370 阅读 · 0 评论 -
第138篇 solidity 中的初始值
solidity 中的初始值原创 2022-10-16 11:12:01 · 548 阅读 · 0 评论 -
第137篇 荷兰拍卖
介绍荷兰拍卖,并通过简化版。荷兰拍卖代码,讲解如何通过。原创 2022-09-18 15:58:32 · 1573 阅读 · 0 评论 -
第136篇 库合约
可用于附加库函数(从库 A)到任何类型(B)。)仍然用 String库合约来演示两种使用库合约中函数的办法。在调用的时候,这个变量会被当作第一个参数传递给函数;库函数是一种特殊的合约,为了提升 solidity。库合约一般都是一些好用的函数合集(库函数。类型变量的成员,可以直接调用。代码的复用性和减少 gas。中的函数会自动添加为。原创 2022-09-18 11:50:09 · 210 阅读 · 0 评论 -
第135篇 solidity 中的控制流与排序
solidity 中的控制流与排序合约示例。原创 2022-09-18 10:28:42 · 357 阅读 · 0 评论 -
第134篇 IPFS Desktop
本文简单介绍windows环境下 IPFS的安装与使用;原创 2022-09-12 13:39:47 · 749 阅读 · 0 评论 -
第133篇 IPFS 介绍
本文简单介绍 IPFS;原创 2022-09-07 20:39:49 · 589 阅读 · 0 评论 -
第132篇 solidity 中的 mapping
Mapping 创建语法: mapping(keyType => valueType)可以是任何内置值类型、字节、字符串或任何约定。可以是任何类型,包括另一个映射或数组。Mappings 不可迭代。原创 2022-07-20 11:16:05 · 846 阅读 · 0 评论 -
第131篇 ERC20 锁仓合约
在《》中,介绍了一种含代币的锁仓、定期释放等功能的ERC20合约;本文介绍另一种更加灵活的ERC20锁仓合约;主要不同点是,该合约独立于标准ERC20之外;原创 2022-07-20 09:02:08 · 690 阅读 · 0 评论 -
第130篇 在 OpenSea 上创建自己的 NFT 商店(2)
本文介绍一种通过自己部署智能合约,在 OpenSea 上创建自己的 NFT 商店的方法;写一个最简单的标准 ERC721 合约,源码:注意:本合约仅用于测试;将合约部署到 polygon mainnet:合约部署成功,合约地址:0x9CEaA80feec2B5D2bb3d3a4bb257f5671Ff8d348在区块浏览器查看,所有操作均成功;tokenURI 通常是指向带有特定属性的JSON文件的链接。OpenSea 标准可以参考官方文档;其示例合约代码:其元数据结构(Metadata str原创 2022-07-06 16:28:13 · 2389 阅读 · 0 评论 -
第129篇 在 OpenSea 上创建自己的 NFT 商店(1)
本文介绍一种直接在 OpenSea 上创建自己的 NFT 商店的方法;原创 2022-06-16 18:12:04 · 592 阅读 · 0 评论 -
第128篇 智能合约改进(ERC721)
本文介绍 ERC721 智能合约的改进原创 2022-06-14 15:39:32 · 2072 阅读 · 0 评论 -
第127篇 solidity 中链表的实现
本文实现 solidity 智能合约中的链表功能;链表,实际就是在合约中实现一个排好序的列表数据原创 2022-06-10 23:07:47 · 514 阅读 · 1 评论 -
第126篇 合约间调用方法
本文介绍三种类型的合约间调用;注意:本文合约均编译通过,仅供参考;原创 2022-06-06 15:50:26 · 478 阅读 · 0 评论 -
第125篇 笔记-solidity中的编码与解码
本文环境:polygon testnet + metamask + remix参考文档:第119篇 笔记-solidity中的ABI本文介绍 solidity 合约中的 abi 编码与解码;1.合约源码// SPDX-License-Identifier: MITpragma solidity ^0.8.13;contract AbiDecode { struct MyStruct { string name; uint[2] nums;原创 2022-05-27 13:03:06 · 687 阅读 · 0 评论 -
第124篇 NFT市场智能合约
本文合约实现简单的 NFT 市场,仅实现单一 NFT 合约资产的拍卖与交易:三种模式:England 拍卖模式:nft owner设置初始起拍价格,竞拍者逐步提高价格发起 offer,价高者得;只能通过 offer 与接受 offer 达成,完成交易主动权在 owner; Netherlands 拍卖模式:nft owner 设置初始价格,竞拍者给出满足该价格的 offer 或者价格更低的 offer,nft owner 可以主动降价,直到有双方都满意的价格出现;只能通过 offer 与接受 o.原创 2022-05-20 17:36:17 · 1490 阅读 · 6 评论 -
第123篇 笔记-sendEther合约
How to send Ether?You can send Ether to other contracts bytransfer (2300 gas, throws error) send (2300 gas, returns bool) call (forward all gas or set gas, returns bool)How to receive Ether?A contract receiving Ether must have at least one of the ..原创 2022-05-15 09:50:11 · 319 阅读 · 0 评论 -
第122篇 笔记-用工厂模式创建合约
本篇可以认为是第85篇 笔记-用合约创建合约 的续篇;介绍在工厂模式下,如何随意创建并管理新合约;// SPDX-License-Identifier: MITpragma solidity ^0.8.3;contract Car { address public owner; string public model; address public carAddr; constructor(address _owner, string memory _mo.原创 2022-05-15 09:38:01 · 293 阅读 · 0 评论 -
第121篇 笔记-初始化父合约的参数
本篇记录 solidity 合约中,子合约如何初始化父合约的参数;及在初始化多个父合约时的调用顺序;// SPDX-License-Identifier: MITpragma solidity ^0.8.3;// Base contract Xcontract X { string public name; constructor(string memory _name) { name = _name; }}// Base contract Y原创 2022-05-15 09:18:01 · 311 阅读 · 0 评论 -
第119篇 solidity 中的 ABI
ABI 全称 Application Binary Interface(应用程序二进制接口),简单来说就是以太坊的调用合约时的接口说明。从外部施加给以太坊的行为都称之为向以太坊网络提交了一个交易, 调用合约函数其实是向合约地址(账户)提交了一个交易,这个交易有一个附加数据,这个附加的数据就是 ABI 的编码数据。1.函数选择器一个函数调用数据的前 4 字节,指定了要调用的函数。这就是某个函数签名的 Keccak 哈希的前 4 字节(高位在左的大端序) (译注:这里的“高位在左的大端序“,指.原创 2022-04-20 13:59:07 · 1447 阅读 · 0 评论 -
第118篇 在区块链浏览器上调用合约
本文环境:参考文档 “第111篇 在区块链浏览器上发布合约源码”合约地址:0x9B78a00a63D38A8BF56965c891B8794C603EF2c61.定位合约及 Read 操作在浏览器上进入合约界面:在contract下,有三个标签:Code、Read Contract、Write Contract;如果是读操作,进入Read Contract,可以随意进行操作,比如查询余额:在输入框填入账号,点击 “Query” 按钮,就可以得到结果;2.Writ.原创 2022-04-18 07:32:02 · 3705 阅读 · 0 评论 -
第117篇 remix 中 struct 类型传参
remix 中,结构体显示为 tuple,使用'[]'标识一个对象;合约示例:// SPDX-License-Identifier: MITpragma solidity 0.8.0;contract tupleTest { struct Man { string name; uint256 age; } Man[] persons; constructor() { persons.p原创 2022-04-12 13:08:11 · 1617 阅读 · 0 评论 -
第116篇 部署可升级的智能合约
操作系统:Windows 11家庭版(64 位)测试工具:Remix IDE:http://remix.app.hubwiz.com/ + MetaMask 7.7.9。原创 2022-04-10 11:07:01 · 717 阅读 · 1 评论 -
第115篇 智能合约的升级模式
参考文档:Proxy Upgrade Pattern - OpenZeppelin Docs Proxy Patterns - OpenZeppelin blog本文介绍了智能合约的“非结构化存储”代理模式,它是 OpenZeppelin 升级的基本构建块。1.为什么要升级合约根据设计,部署的智能合约是不可更改的。另一方面,软件质量在很大程度上取决于升级和修补源代码以生成迭代版本的能力。尽管基于区块链的软件从技术的不变性中获益匪浅,但修复错误和潜在的产品...原创 2022-04-10 11:02:01 · 546 阅读 · 0 评论 -
第113篇 笔记-DateTime智能合约
关于日期时间的智能合约,包含闰年计算、时间戳与格式化日期时间的互相转换等功能;合约代码:// SPDX-License-Identifier: MITpragma solidity ^0.8.0; contract DateTime { /* * Date and Time utilities for ethereum contracts * */ struct _DateTime {原创 2022-03-26 11:12:13 · 424 阅读 · 0 评论 -
第112篇 区块链上的预言机(Chainlink)
本文环境: 操作系统:Windows 11家庭版(64 位) 公链网络:币安智能链测试网(BSC Testnet)+ https://testnet.bscscan.com/ 测试工具:Remix IDE + MetaMask 7.7.9 合约源码:https://github.com/smartcontractkit/chainlink/tree/develop/contracts...原创 2022-03-19 19:35:53 · 6357 阅读 · 0 评论