天天看點

DeFi學習筆記(2):智能合約

基于對未來DeFi預期的看好,我開始學習DeFi,同時也會在公衆号裡面記錄和分享相關的學習筆記,希望大家能夠喜歡并一起溝通。昨天講了區塊鍊的基礎知識,今天來一起學習智能合約。

智能合約

智能合約(英語:Smart contract )是一種旨在以資訊化方式傳播、驗證或執行合同的計算機協定。智能合約允許在沒有第三方的情況下進行可信交易,這些交易可追蹤且不可逆轉。智能合約概念于1994年由Nick Szabo首次提出 。智能合約的目的是提供優于傳統合約的安全方法,并減少與合約相關的其他交易成本。大家經常聽到的智能合約是指基于以太坊虛拟機上運作的使用者定義的Solidity語言程式。

DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約

Solidity語言

Solidity是一種針對Ethereum虛拟機(EVM)設計的花括号語言。它受到了C++、Python和JavaScript的影響。是一種支援繼承、庫和複雜的使用者定義類型等特性的靜态類型語言。

Solidity語言入門學習推薦使用“0xAA“大神的【WTF學院】的課程,傳送門:https://www.wtf.academy/solidity-start/

下面是一些基本文法

DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約

構造函數:一般用作傳遞合約參數,或者原始值的設定

DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約

通過具體項目來分析智能合約代碼:加密貓項目(CryptoKitties)

加密貓是以太坊上面的一個早期且非常火爆的NFT項目。項目采用“荷蘭拍”的方式進行售賣。

注:荷蘭拍,又稱降價拍賣,拍賣人先将價格設定在足以阻止所有競拍者的水準,然後由高價往低價喊,第一個應價的競拍者獲勝,并支付當時所喊到的價格 。

DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約

項目代碼說明

定義狀态變量

initialPrice(初始價格),biddingPeriod(投标時間段),offerPriceDecrement(價格衰減率),startTime(開始時間),kitty(加密貓),seller(售賣者),winnerAddress(購買者位址)

函數 buyNow(立即購買,可以接受ETH支付)

變量

timeElapsed(消耗的時間)=目前時間-開始時間

currPrice(目前價格)=初始價格-(消耗的時間*價格衰減率)

userBid(使用者資産)

要求

winnerAddress為0位址(表示該kitty還未被人所擁有)

timeElapsed<biddingPeriod(消耗的時間小于拍賣總時間,目前是在拍賣時間内)

userBid>=currPrice(使用者資産不能少于目前的價格)

DeFi學習筆記(2):智能合約

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):智能合約

以太坊網絡交易費的計算方式在 2021 年 8 月的倫敦更新後發生了改變。詳情可以參考:https://ethereum.org/zh/developers/docs/gas/

DeFi學習筆記(2):智能合約

如果一個交易一共有4個步驟,提供的gas隻夠完成前三步操作,那麼将會在完成前三步操作後(會消耗gas)退回到第一步,也就是會消耗gas,但是事情并沒有完成,是以要計算好gas,并給足gas這點非常重要

DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約
DeFi學習筆記(2):智能合約

第三方平台或者應用都會有gas計算和預警,如果gas或者資金不夠會阻止操作進行

DeFi學習筆記(2):智能合約

常見的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玩轉」聯系作者

繼續閱讀