NFT+defi質押流動性挖礦系統開發技術分析(邏輯方案部署)
NFT的全稱是Non-Fungible Tokens,中文常翻譯為“非同質化token/不可替代token”,即非同質化代。簡單地說,NFT是區塊鏈的一個條目。雖然比特幣(BTC)、以太幣(ETH)等主流加密資產也記錄在中,但NFT和它們不同的地方在於:實際上每一個NFT的背後都會隨機生成一串程式碼 ,這串程式碼唯-一且永遠不變,任何一枚NFT token都是不可替代且不可分割的。
NFT系統開發的上鍊可分為兩種,即公鏈與聯盟鏈。國外應用較多的為公鏈,這種情況的NFT系統通常是去中心化的,內部交易需要搭建錢包來完成,有以太、Polygon、heco鏈等主流公鏈。
初始化工作
Geth 的 main() 函式非常的簡潔,透過 app.Run() 來啟動程式
[./cmd/geth/main.go]func main() {if err := app.Run(os.Args); err != nil {fmt.Fprintln(os.Stderr, err)os.Exit(1)}}複製其簡潔是得力於 Geth 使用了 擴充套件包,該擴充套件包用於管理程式的啟動,以及命令列解析,其中 app 是該擴充套件包的一個例項。
在 Go 語言中,在有 init() 函式的情況下,會預設先呼叫 init() 函式,然後再呼叫 main() 函式;Geth 幾乎在 ./cmd/geth/main.go#init() 中完成了所有的初始化操作:設定程式的子命令集,設定程式入口函式等,下面看下 init() 函式片段:
[./cmd/geth/main.go]func init() {// Initialize the CLI app and start Gethapp.Action = gethapp.HideVersion = true // we have a command to print the versionapp.Copyright = “Copyright 2013-2018 The go-ethereum Authors”app.Commands = []cli.Command{// See chaincmd.go:initCommand,importCommand,exportCommand,importPreimagesCommand,…}…}複製在以上程式碼中,預設了 app 例項的值,其中 app.Action = geth 作為 app.Run() 呼叫的預設函式,而 app.Commands 儲存了子命令例項,透過匹配命令列引數可以呼叫不同的函式(而不呼叫 app.Action),使用 Geth 不同的功能,如:開啟帶控制檯的 Geth、使用 Geth 創造創世塊等。【更全面的開發原始碼搭建可看我暱稱】
節點啟動流程
無論是透過 geth() 函式還是其他的命令列引數啟動節點,節點的啟動流程大致都是相同的,這裡以 geth() 為例:
[./cmd/geth/main.go]func geth(ctx *cli.Context) error {node := makeFullNode(ctx)startNode(ctx, node)node.Wait()return nil}複製其中 makeFullNode() 函式將返回一個節點例項,然後透過 startNode() 啟動。在 Geth 中,每一個功能模組都被視為一個服務,每一個服務的正常執行驅動著 Geth 的各項功能;makeFullNode() 透過解析命令列引數,註冊指定的服務。以下是 makeFullNode() 程式碼片段:
[./cmd/geth/config.go]func makeFullNode(ctx cli.Context) node.Node {stack, cfg := makeConfigNode(ctx)
utils.RegisterEthService(stack, &cfg.Eth) if ctx.GlobalBool(utils.DashboardEnabledFlag.Name) { utils.RegisterDashboardService(stack, &cfg.Dashboard, gitCommit) } … // Add the Ethereum Stats daemon if requested. if cfg.Ethstats.URL != “” { utils.RegisterEthStatsService(stack, cfg.Ethstats.URL) } return stack
}複製然後透過 startNode() 啟動各項服務並執行節點。以下是 Geth 啟動流程圖:
每個服務正常執行,相互協作,構成了 Geth:
0x03 網路架構透過 main() 函式的呼叫,最終啟動了 p2p 網路,這一小節對網路架構做詳細的分析。
三層架構以太坊是去中心化的數字貨幣系統,天然適用 p2p 通訊架構,並且在其上還支援了多種協議。在以太坊中,p2p 作為通訊鏈路,用於負載上層協議的傳輸,可以將其分為三層結構:
最上層是以太坊中各個協議的具體實現,如 eth 協議、les 協議。第二層是以太坊中的 p2p 通訊鏈路層,主要負責啟動監聽、處理新加入連線或維護連線,為上層協議提供了通道。最下面的一層,是由 Go 語言所提供的網路 IO 層,也就是對 TCP/IP 中的網路層及以下的封裝。p2p 通訊鏈路層從最下層開始逐步分析,第三層是由 Go 語言所封裝的網路 IO 層,這裡就跳過了,直接分析 p2p 通訊鏈路層。p2p 通訊鏈路層主要做了三項工作:
由上層協議的資料交付給 p2p 層後,首先透過 RLP 編碼。RLP 編碼後的資料將由共享金鑰進行加密,保證通訊過程中資料的安全。最後,將資料流轉換為 RLPXFrameRW 幀,便於資料的加密傳輸和解析。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70028290/viewspace-2982282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DeFi質押流動性挖礦模式丨LP流動性質押挖礦系統開發技術講解方案分析邏輯模式
- 智慧合約流動性質押挖礦開發規則丨質押挖礦系統開發技術及邏輯分析
- 淺談DeFi質押流動性挖礦專案系統開發方案(技術詳情)分析邏輯
- (NFT+DEFI)LP流動性挖礦邏輯系統開發(原始碼部署)原始碼
- DeFi流動性質押挖礦Dapp系統開發方案(技術分析)APP
- defi流動性質押挖礦系統開發方案 | 流動性質押挖礦系統開發 DAPPAPP
- LP流動性池質押挖礦系統開發技術方案
- DAPP流動性質押挖礦模式系統開發技術方案APP模式
- 流動性質押挖礦開發規則丨流動性質押挖礦系統開發(方案及詳情)及程式碼部署
- Meta2032智慧合約流動性質押挖礦開發丨Meta2032流動性質押挖礦系統開發(方案及邏輯)
- defi質押流動性挖礦系統開發DAPP質押挖礦系統APP
- 代幣合約LP質押流動性挖礦系統開發(技術分析)
- DeFi丨LP質押流動性挖礦系統設計開發技術分析
- DAO生態鏈(NFT+DEFI)LP流動性挖礦邏輯系統開發(原始碼部署)原始碼
- ULAB質押挖礦系統開發(方案及邏輯)
- DAPP流動性質押挖礦系統開發模式方案APP模式
- 索拉迪質押流動性挖礦原理及系統開發技術
- DeFi流動性質押挖礦系統開發及馬蹄鏈質押挖礦詳細開發方案
- 雲算力質押挖礦系統開發方案(需求及邏輯分析)
- socialfi社交代幣質押流動性挖礦dapp系統開發功能邏輯APP
- DAPP智慧合約Defi質押流動性挖礦系統技術開發分析APP
- DeFi單雙幣/代幣流動性質押挖礦系統開發技術分析
- 質押挖礦模式系統開發技術方案丨質押DAPP挖礦系統開發流程模式APP
- USDT質押挖礦/系統開發說明/SUDT流動性挖礦技術開發搭建詳情
- 索拉迪挖礦/LP質押流動性挖礦系統開發/索拉迪開發技術詳情
- Defi+NFT質押流動性挖礦系統開發/LP質押挖礦功能開發解析
- DeFi/LP流動性質押挖礦系統開發技術/IDO代幣預售/質押挖礦詳情
- pathdao質押挖礦系統開發技術搭建方案
- NFT質押LP挖礦系統開發技術方案
- DAPP代幣預售質押流動性挖礦系統元件開發(技術分析)APP元件
- defi質押挖礦機制|LP流動性挖礦系統開發[規則分析]
- LP流動性質押挖礦系統開發流程解析丨LP流動性質押挖礦開發成品原始碼功能原始碼
- Defi質押挖礦/LP存幣生息系統開發/LP流動性挖礦開發技術詳情
- BSC鏈代幣質押流動性挖礦系統設計開發技術
- WBID流動性質押挖礦系統技術開發/DAPP/defi/LPAPP
- WBID/LP流動性質押挖礦系統開發詳情(技術版)
- LP流動性質押挖礦系統開發模式案例模式
- LP流動性質押挖礦系統軟體開發