主頁 > 區塊鏈 > Cadence入門|系列五:深入了解Flow Cadence,為數字資產而專門打造的智能合約編程語言

Cadence入門|系列五:深入了解Flow Cadence,為數字資產而專門打造的智能合約編程語言

2021-08-07 08:44:59 區塊鏈

原文鏈接:https://www.onflow.org/post/flow-blockchain-cadence-programming-language-resources-assets

翻譯:Jihui Zheng(來自Flow開發社區)

前言

Flow 是一個新的區塊鏈,最初由 CryptoKitties 和 NBA Top Shot 的母公司 Dapper Labs 設計和開發,在接下來的一系列文章中,我們將從技術角度探討 Flow 鏈的各個基礎組件,

  • Cadence,一種使智能合約開發程序更快、更安全的新編程語言

  • Flow Client Library (FCL),它類似于以太坊上的 Web3.js,但更加簡潔通用

  • Flow 多節點架構,面向未來的主流擴展架構(即將推出)

隨著加密貨幣的大規模采用,區塊鏈應用程式上承載的價值在不斷增長, 但用來處理這些鏈上數字資產的技術工具仍不成熟,盡管有高成本且耗時的安全審計,但鏈上智能合約通常無法提供長期可持續的安全模型,一個可以安全且公平地處理鏈上存盤價值的模型,開發人員通常需要從頭創建一些工具才能實作一些基本的安全功能,直到現在,還缺乏一種能夠完全安全地處理數字資產的編程語言,

PROFILE

進入Cadence的世界

Cadence 是第一種專門用于鏈上數字資產所有權的編程語言,例如區塊鏈上的藝術品、收藏品或加密貨幣,在 Cadence 中,數字資產是一等公民,在可以很好的控制數字資產的訪問的同時,做到了防止數字資產意外丟失或惡意復制的可能性,

Cadence 使用一種獨特的數字資產資料模型:資源,資源使數字資產的創建、傳輸和存盤更容易、更安全,與基于權利屬性的的資源訪問控制策略相結合,讓這門編程語言的學習曲線更平緩、更容易被審計,并且比任何當前的其他替代方案的開發效率都更高,

基于 Flow 以用戶為中心的賬戶模型,Cadence 引入了數字資產的直接所有權模型,可實作更高程度的去中心化和抗攻擊性,用戶的數字資產被安全地存盤在用戶的帳戶中,

Cadence 在撰寫時考慮到了消費級用例,在其堅實的科學研究基礎之上構建了可擴展性,作為 NBA Top Shot 的支柱,它已經過大規模的實戰測驗,這是有史以來增長最快的區塊鏈應用程式之一,注冊人數超過一百萬,

除此之外,每天都有成千上萬的用戶與越來越多的 Cadence 驅動的應用程式(如市場、游戲或交易所)進行互動,證明了其耐用性和可靠性,這些好處每天都會吸引新的開發人員,使他們能夠享受 Cadence 改進的安全性、生產力和可讀性帶來的好處,

Diem (Move) 等行業的其他大玩家開始利用資源的力量這一事實暗示下一代智能合約編程可能會開啟面向資源的語言時代,而 Cadence 是第一個準備就緒的面向資源的語言今天在區塊鏈上使用

數字資產應對的挑戰

讓區塊鏈技術開辟一個充滿可能性的新世界的最大創新是實作原生數字價值,在區塊鏈上,代碼不僅僅是對某種外部資產的映射,而是這些鏈上的代碼本身就是資產,區塊鏈上的資料不會輕易丟失、無法被任意復制和篡改,這些鏈上的資料自身是有價值的,是用戶可以去持有的,無論是 NFT、收藏品、加密貨幣還是治理代幣,它們都是這一類新興數字資產類別的一部分,

盡管這種資產演變的前景令人興奮,但令人擔憂的是,目前用來管理這些數字資產的工具依然處于原始社會:像 Solidity 這樣的智能合約編程語言處理數字資產及其可能帶來的巨大價值和處理任何其他可變的資料結構沒有任何區別,同時這些數字資產又是存盤在一個中央賬本中,下面用一些例子來說明這些編程語言在處理數字資產方面所面臨的巨大風險和挑戰,

■ 案例1: 中央賬本創建蜜罐陷阱

以下代碼片段展示了使用 Solidity來簡易的實作同質化代筆,這個受 ERC-20標準啟發的同質化代幣智能合約包含兩個功能:允許生成新代幣的鑄幣功能,以及允許將資金轉移到不同地址的發送功能,

contract AnyCoin {      mapping (address => uint) public balance;            function mint(address receiver, uint amount) {        balance[receiver] += amount;      }            function send(address receiver, uint amount) {        balance[msg.sender] -= amount;        balance[receiver] += amount;      }    }

關于數字資產的關鍵問題是:每個人的代幣持有量在哪里以及如何存盤?該片段顯示,這些代幣持有量由合約頂部的資料結構表示:余額映射,這種資料結構是一個中央賬本,將每個持有人的地址映射到特定的代幣余額,有效地將所有數字資產存盤在智能合約本身中,

mapping(address => uint) public balance;

這些中央映射通常負責一次處理數十億美元的等值價值,正如看一眼以太坊上最受歡迎的 ERC-20 代幣合約所示,以如此集中的方式存盤這些大量的數字資產為黑客創建了中央蜜罐,不幸的是,數百萬美元的黑客已經成為許多團隊和用戶的悲慘現實:僅在 2020 年,整個加密犯罪造成的總價值就達到了 19 億美元,其中黑客的總價值為 5.13 億美元[來源](https://www.securitymagazine.com/articles/94627-19b-in-crypto-currency-stolen-by-hackers-last-year),但這種集中存盤只是 Solidity 等語言存在的問題中的一個,

■ 案例2: 數字資產需要一個更靈活的資料模型

因為Solidity中的映射是可變的資料結構,它沒有強加任何處理數字資產的約束規則,所以沒有什么可以阻止開發人員錯誤地撰寫惡意代碼,為了說明這一點,讓我們看一下代幣合約的另一個實作,

contract BugCoin {      mapping (address => uint) public balance;            function mint(address receiver, uint amount) {        balance[receiver] += amount;      }            function send(address receiver, uint amount) {        balance[msg.sender] -= amount;        // balance[receiver] += amount;      }    }

在這個例子中,發送函式中被注釋了一行必不可少的代碼:BugCoin 的轉移會導致發送方的余額被扣除 ,但接收方的余額永遠不會增加,由于缺少一行代碼,該合約的任何轉移的的價值都將永久丟失,令人震驚的是,沒有什么能阻止以太坊上的合約發生類似的情況,由于Solidity編譯器不會對這類語意錯誤做檢查,所以這段代碼可以毫無障礙地部署在測驗網甚至主網上,在每筆轉移資產的交易中吞噬轉移的代筆并讓用戶的權益受損,

智能合約的不可隨意修改的性質及其上承載的數額巨大的資產給區塊鏈開發人員帶來了巨大的責任和壓力,正如上面兩個例子所展示的,現有智能合約編程語言的局限性讓程式員的開發程序例外的艱難,事實上,還有更多底層代碼需要處理,比如管理數值上下溢位的問題,或者在不同貨幣單位之間進行轉換,這在一個每天需要處理大量資產的地方,這些問題會造成不少麻煩,這就產生了能夠有一種可以安全地處理數字資產的智能合約編程語言的需求,

> 認識 Cadence,這是為數字資產而設計的語言,

Cadence: 使用面向資源范式來解決數字資產安全問題

Cadence 通過為數字資產引入一種新的自定義資料模型:資源,來消除了現有智能合約編程語言所帶來的大部分風險,受線性型別的啟發,資源模型能讓開發人員提前發現運行時錯誤,在開發期間就可以即使發現并且做出代碼修改來規避,

開發人員在使用Cadence的時候可以很清楚的知道自己是否在處理資源型別資料,因為資源的創建或傳輸需要使用移動運算子 (<-),而資源資料的型別會使用符號 (@) 來標注說明,這些直觀的符號可以防止開發者錯誤地使用Cadence,并且讓代碼更易于閱讀、撰寫、學習和維護,

但是 Cadence 的資源模型并不僅僅只是現有資料模型的語法糖,而是在操作資產時會執行嚴格的規則約束,可以避免因為開發人員的錯誤而導致數字資產丟失,資源模型規定一個資源只能在一個確定的時間存在于一個確定的地方,使其不可以被惡意復制或意外洗掉,并提高所有涉及數字資產操作的安全性,

還記得我們在 BugCoin 合約中的制造的惡意發送功能嗎?在 Cadence 中,這種代碼從一開始就不會被編譯,這是因為 Cadence 中同質化代幣合約的代幣持有量是通過嚴格的規則約束的資源模型來實作的,每個代幣持有者都有自己的保險庫資源,用于在其賬戶中持有該代幣,并且該資源會提供提款和存款方法,

pub resource Vault: Provider, Receiver, Balance {        // pub = publicly readable, internally writable        pub var balance: UFix64        init(balance: UFix64) {            self.balance = balance        }        pub fun withdraw(amount: UFix64): @Vault {            self.balance = self.balance - amount            return <-create Vault(balance: amount)        }                    pub fun deposit(from: @Vault) {            self.balance = self.balance + from.balance            destroy from        }    }    

資產在進行轉移的時候永遠是安全的,因為交易金額在被提款后會被放入臨時金庫資源中,這個臨時金庫然后可以存入其他人的存入功能,或被顯式洗掉,但與 Solidity 示例中的 send 函式不同,代幣是不可能會意外丟失的,因為如果有資源沒有被使用,Cadence編譯器將拋出錯誤,

transaction {      var temporaryVault: @ExampleToken.Vault      prepare(...) {        ...        self.temporaryVault <- myVault.withdraw(amount: 10.0)      }      execute {        ...        // Type-check will not pass if temporaryVault is not explicitly used!        receiverRef.deposit(from: <-self.temporaryVault)      }      post {        ...      }    }

這個例子說明了這種資料模型在安全性方面的兩個額外優勢:

  • 首先,如果接收者沒有代幣保險庫 - 無論是因為地址錯誤還是該賬戶不想接收這些型別的代幣 - 交易將會被回滾,不會再有代幣因為發送地址拼寫錯誤而丟失!

  • 其次,在事務和函式中包含前置和后置條件使得開發人員可以很容易實作對正確結果的斷言檢查,因此開發人員和用戶可以對其基于區塊鏈的互動的正確性充滿信心,

除了使對數字資產操作的開發更具可讀性和安全性之外,資源模型還允許使用組合和嵌套等高級用例,如果要對資源進行分組,您只需創建一個集合資源作為單個資源的包裝器,這使得開發人員很容易實作資源的批量轉移(多個資源同時轉移),加快開發程序,讓用戶更快、更安全地進行價值傳遞,

所有權模型: 讓資產呆在它們本應該呆的地方

Cadence 的另一個巨大優勢在于它與 Flow 協議的深度集成:資源存盤在它們所屬的地方,直接存盤在用戶的帳戶中,

let myCoolAsset <- create CoolAsset()    account.save<@CoolAsset>(<-myAsset, to: /storage/myCoolAsset)

這種以人為本的賬戶模型對數字資產有更直接的所有權,并且與Solidity等語言提供的中央賬本方法相比具有多種優勢:

更去中心化更安全

> 不同于Solidity等語言會將數字資產存盤在智能合約中會造成單點事故,Cadence永遠都將數字資產存盤在用戶自己的賬戶中,這顯著提高了安全性,因為它最大限度地減少和分散了大規模攻擊的載體,通過分散潛在攻擊目標使得攻擊成本足夠高使得攻擊行為性價比變低,

■ 提高效率

> 使用中央賬本模型很難完整地收集一個特定用戶擁有的所有資產的資訊,因為這需要對用戶可能持有資產的每一個智能合約進行查詢互動,使用 Flow,用戶的所有數字資產都在他們的賬戶中,使這些資產更易于查詢和互動,

■ 更容易使用

> 不僅僅是開發人員,Flow上的用戶也都會發現這種以人為中心的帳戶模型更容易去理解,因為它避免了不必要的復雜性并建立在大多數人的直覺模型上 ——顯然中央帳本模型違反直覺且難以理解,

但最重要的是,Flow 直觀的賬戶模型為基于權利屬性的訪問控制奠定了基礎,這是 Cadence 以細粒度和高度可讀的方式來管理資源訪問的方式,

■ 權利屬性: 易于理解的資源訪問權限控制

權利屬性類似于權限:它們控制用戶只可以對資源執行給定的操作,如果你想呼叫一個資源的方法,你需要有一個有效的權利屬性,

權利屬性是通往資源的門戶,與 REST API 一樣,權利屬性也有路徑,如果該路徑存在于帳戶的公共域中,則任何人都可以獲得該權利屬性;私有域中的權利屬性只能由該帳戶的所有者訪問,

無論是在公共域還是私有域,權利屬性總是鏈接到一個目標資源,該目標可以是整個資源,也可以只是這個資源所提供所有方法的一個子集,對于后者,介面可以作為權利屬性鏈接的目標,這就是權利屬性如何提供給用戶易讀且細粒度的資源訪問控制,

要與資源進行互動,您首先必須在借用其底層資源之前獲得特定的權利屬性,這可以在任何事務中輕松完成,

account.getCapability<...>(/public/MyCapability).borrow()

與Solidity中嚴重依賴檢查 `msg.sender` 值的基于訪問串列的模型相反,權利屬性允許靈活的資源訪問控制模型,允許以簡單,可讀和安全的方式授予、修改和撤銷對資源甚至部分資源的訪問的權限,

總而言之,資源模型、權利屬性和 Flow 的帳戶模型使 Cadence 成為一種學習速度更快、更易于審計且更高效的語言,讓開發人員可以在確保用戶資產安全的同時更快地構建應用程式,由于這些優勢,越來越多的團隊正在使用這種面向資源范式的模式來開發鏈上應用,

行業覺醒:開啟面向資源編程的鏈上開發時代

“當舊的思維模式或者做事方式被一種完全不同的方式所取代時,一種非常重要且全新的范式轉變就出現了”社會學家托馬斯·庫恩在他的著作《科學革命的結構》一書中簡潔地概述了這一點,

對于技術革命來說也是如此:新的挑戰引發了新的解決方案,隨著軟體開發逐漸進入新的領域,如何構建軟體的“正確方法”一致在發生變化 — 就像 SQL 是解決原子事務的答案一樣,對用戶圖形界面開發的需求導致了 Java 等面向物件語言的出現,

我們今天面臨的挑戰是如何在區塊鏈上安全地處理數以億記的資產,Cadence 提出的解決方案是整個行業在逐漸靠攏的新范式:面向資源編程,

目前位置,很多業內的大玩家都已經開始實作了面向資源范式的編程語言,比如 Diem 團隊開發了他們的智能合約語言 Move,因為資源導向范式的優點很容易被理解,所以會有越來越多的開發者和團隊會遵循這種開發范式,

Cadence 是第一個使用面向資源范式的智能合約編程語言,在安全性、可讀性和可組合性方面樹立了新的標準,由于這些優于現有其他智能合約編程語言的優勢,Cadence很有可能會成為下一代智能合約的通用語言,

您可以從今天開始使用我們為開發者量身定制的學習資源來學習 Cadence,成為這種智能合約編程新范式的一份子,這些學習資源都是由 Flow 和 Cadence 背后的核心團隊所撰寫的,

  • Cadence介紹:https://docs.onflow.org/cadence/

  • Cadence系列教程:https://docs.onflow.org/cadence/tutorial/01-first-steps/

  • Cadence語言手冊:https://docs.onflow.org/cadence/language/

  • Cadence playground:https://play.onflow.org/local?type=account&id=LOCAL-account-0

結論

希望這些資訊能對你有所幫助!一如既往的,有任何問題或者建議,都通過下面的這些渠道聯系我們!

Flow Discord: https://discord.gg/flow

Flow Forum: https://forum.onflow.org

Flow Github: https://github.com/onflow/flow

下周見!

👋

END

什么是Flow福洛鏈?

Flow福洛鏈是一個快速,去中心化,且對開發者友好的區塊鏈,旨在為新一代游戲、娛樂應用程式提供動力的數字資產的基礎,Flow是唯一一個由始至終為消費者提供出色體驗的Layer-1區塊鏈團隊,其團隊創造的dApp包括:CryptoKittiesDapper WalletsNBA Top shot

CrytoKitties于2017年推出時便快速成為加密市場最受歡迎的dApp,因其成功而導致以太坊堵塞,在Flow上運營的NBA Top shot也已成為增長最快的dApp,在公開發布后的6個月創造了7億美金銷量,正因為Flow公鏈的可擴展性和消費者友好的體驗,讓這一切成為可能,目前有300多個專案正在Flow鏈上籌備中,我們期待看到一個偉大的生態系統蓬勃發展,

關于Dapper Labs

Dapper Labs是一家位于加拿大的全球頂尖區塊鏈服務商,在2017 年年底通過CryptoKitties收藏游戲成功進如?戶視野,并且因為加密貓的爆?導致以太坊擁堵,從而推出Flow公鏈以及全新的開發語言—— Cadence,旨在吸引更多的開發者在Flow 上開發應?,

Flow的合作伙伴們:

我們歡迎越來越多的小伙伴加入Flow星球,為星球增添色彩!

Flow 官網:https://zh.onflow.org/

Flow 論壇: https://forum.onflow.org/

Flow Discord:

https://discord.com/invite/flow

Flow CN Telegram: https://t.me/flow_zh

Flow B站:https://space.bilibili.com/1002168058

Flow 微博:

https://weibo.com/7610419699

Flow CSDN:

https://blog.csdn.net/weixin_57551966?spm=1010.2135.3001.5343

掃碼添加Flow官方賬號微信號,加入Flow生態群

微信號 : FlowChainOfficial

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/292252.html

標籤:區塊鏈

上一篇:透過DeFi看算力平臺的價值

下一篇:ETH有著更高的資本效率

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more