基于对未来DeFi预期的看好,我开始学习DeFi,同时也会在公众号里面记录和分享相关的学习笔记,希望大家能够喜欢并一起沟通。昨天讲了区块链的基础知识,今天来一起学习智能合约。

智能合约

智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出 。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。大家经常听到的智能合约是指基于以太坊虚拟机上运行的使用者定义的Solidity语言程序

DeFi学习笔记(2):智能合约_defi

DeFi学习笔记(2):智能合约_defi_02

Solidity语言

Solidity是一种针对Ethereum虚拟机(EVM)设计的花括号语言它受到了C++、Python和JavaScript的影响。是一种支持继承、库和复杂的用户定义类型等特性的静态类型语言。

Solidity语言入门学习推荐使用“0xAA“大神的【WTF学院】的课程,传送门:https://www.wtf.academy/solidity-start/

下面是一些基本语法

DeFi学习笔记(2):智能合约_智能合约_03

DeFi学习笔记(2):智能合约_defi_04

DeFi学习笔记(2):智能合约_defi_05

构造函数:一般用作传递合约参数,或者原始值的设定

DeFi学习笔记(2):智能合约_defi_06

DeFi学习笔记(2):智能合约_智能合约_07

DeFi学习笔记(2):智能合约_智能合约_08

DeFi学习笔记(2):智能合约_defi_09

DeFi学习笔记(2):智能合约_智能合约_10

DeFi学习笔记(2):智能合约_defi_11

DeFi学习笔记(2):智能合约_智能合约_12

通过具体项目来分析智能合约代码:加密猫项目(CryptoKitties)

加密猫是以太坊上面的一个早期且非常火爆的NFT项目。项目采用“荷兰拍”的方式进行售卖。

:荷兰拍,又称降价拍卖,拍卖人先将价格设定在足以阻止所有竞拍者的水平,然后由高价往低价喊,第一个应价的竞拍者获胜,并支付当时所喊到的价格 。

DeFi学习笔记(2):智能合约_智能合约_13

DeFi学习笔记(2):智能合约_defi_14

项目代码说明

定义状态变量

initialPrice(初始价格),biddingPeriod(投标时间段),offerPriceDecrement(价格衰减率),startTime(开始时间),kitty(加密猫),seller(售卖者),winnerAddress(购买者地址)

函数 buyNow(立即购买,可以接受ETH支付)

变量

timeElapsed(消耗的时间)=当前时间-开始时间

currPrice(当前价格)=初始价格-(消耗的时间*价格衰减率)

userBid(用户资产)

要求

winnerAddress为0地址(表示该kitty还未被人所拥有)

timeElapsed<biddingPeriod(消耗的时间小于拍卖总时间,当前是在拍卖时间内)

userBid>=currPrice(用户资产不能少于当前的价格)

DeFi学习笔记(2):智能合约_智能合约_15

Gas费用

Gas 是指在以太坊网络上执行特定操作所需的计算工作量。由于每笔以太坊交易都需要计算资源才能执行,每笔交易都需要付费。在这个方面上,Gas 是指在以太坊成功进行交易所需的费用。

Gas 费用是以太坊的货币以太 (ETH) 支付的。Gas 价格以 Gwei 标明,Gwei 本身就是 ETH 的一个单位――每个 Gwei 等于 0.000000001 ETH (10-9 ETH)。例如,您可以说您的 Gas 成本为 1 Gwei,而不是说您的 Gas 成本为 0.000000001 以太。“gwei”一词本身表示“giga-wei”,等于 1,000,000,000 wei。 wei是 ETH 中最小的单位。类比BTC中的聪(sat)

1 ETH = 10 ** 9 Gwei

1 Gwei = 10 ** 9 wei

1 ETH = 10 ** 18 wei

DeFi学习笔记(2):智能合约_defi_16

以太坊网络交易费的计算方式在 2021 年 8 月的伦敦升级后发生了改变。详情可以参考:https://ethereum.org/zh/developers/docs/gas/

DeFi学习笔记(2):智能合约_智能合约_17

如果一个交易一共有4个步骤,提供的gas只够完成前三步操作,那么将会在完成前三步操作后(会消耗gas)退回到第一步,也就是会消耗gas,但是事情并没有完成,所以要计算好gas,并给足gas这点非常重要

DeFi学习笔记(2):智能合约_智能合约_18

DeFi学习笔记(2):智能合约_defi_19

DeFi学习笔记(2):智能合约_defi_20

第三方平台或者应用都会有gas计算和预警,如果gas或者资金不够会阻止操作进行

DeFi学习笔记(2):智能合约_智能合约_21

常见的Token协议标准

ERC-20:ERC-20 协议是以太坊区块链较早的、比较流行的代币规格协议。若以太坊平台上两种代币都以 ERC-20 发行,则两者之间可以进行自由置换(同质化代币)。常见的token的发行一般都是基于该标准。

ERC-721:该协议是以太坊的针对不可置换代币(非同质化代币)的 NFT 数字资产的第一个标准,应用于 CryptoKitties、Decentraland 等NFT项目。

ERC-1155:它是一种合约规范, 它所定义的接口的是为了更方便的管理多种代币,可以支持ERC-20和ERC-721,比如蒙娜丽莎做成了一个唯一的NFT想要售卖,但是应为价格太高了,于是做成了100块同样的NFT,对于整理而言这是一个NFT,对于这100而言他们是可以置换的代币。

更加详细内容可以参考:

https://juejin.cn/post/6998138984194899981

https://www.defidaonews.com/article/6766764

以上就是今天的学习笔记——智能合约,希望大家能够喜欢,多多学习交流

视频课程来自B站分享的《DeFi进阶知识介绍【加州大学伯克利公开课】》:https://www.bilibili.com/video/BV1484y1W7J4?p=1&vd_source=a465643d69ac5c653510e0b23d8231bb

课程原文链接:https://defi-learning.org/f22

为了回馈粉丝,我做了一个单用户价值100元的抽奖活动(2023-5-16 21:00开奖),公众号「python玩转」后台回复「抽奖」即可获得链接参与抽奖。

如果有其他问题可以通过公众号「python玩转」联系作者