以太坊(以太坊solidity合約)

以太坊(以太坊solidity合約)

  • 1,以太坊
  • 2,開發名詞解釋
    • (1)錢包
    • (2)Solidity
    • (3)Ether(以太幣)
    • (4)Truffle
    • (5)Web3.js
  • 3,叔伯塊礦工獎勵計算
  • 4,如何查詢區塊計算gas
  • 5,第一個智能合約
    • (1)語法格式
    • (2)編譯
    • (3)部署
    • (4)調用

1,以太坊

以太坊坊的錢包

Minist 是完整版的錢包,下載的是以太坊所有的數據,最終成為一個節點
數據太大,快一天才能下完

Metamask錢包
前面的是全節點同步
此開發人員只想借用錢包完成合約發布測試和部署

基于網頁端的錢包,可以不用同步錢包所有信息,但可以實現合約測試和部署

一旦發布,代碼開源和不可更改

天然是某些行業的解決方案
捐款、眾籌、游戲等

比特幣的區塊只有交易信息,如下
在這里插入圖片描述

https://cn.etherscan.com/blocks
此可以查看到從誕生之初到現在的以太坊的區塊

每個區塊除了交易信息外還有代碼信息

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

智能合約可以發布和部署

一旦部署成功,每個合約會有一個地址,以后可以通過這個地址去調用合約中的函數,或修改合約中的狀態

以太坊并沒有

Solidity最大特點有地址類型變量,可以完成賬戶間的轉賬,而且也只有它對以太坊的分布式賬本有讀寫和調用

前端的都是調用solidity,solidity訪問底下的分布式賬本

以太坊和其他區塊鏈一樣,也會有一個點對點的協議,完成轉賬和數據相關操作

智能合約只能通過虛擬機編譯部署

以前服務器訪問返回數據,基于區塊鏈的分布式賬本,全球的節點,寫入數據操作昂貴,節點同步會消耗資源時間

開發了智能合約后要將合約部署到分布式賬本以太坊需要花錢
部署完畢后,誰調用合約也要花錢,每次調用都花錢,若調用免費,會出現惡意寫入數據的場景,geth優化分布式賬本操作

Remix在線,有網,網速不快第一次打開會

如果網速不好,可以安裝本地版,不暫
在這里插入圖片描述

本地版門檻較高

專注編程

使用remix環境

練習時可以部署到本地,最后一層可以部署到遠程

http://remix.ethereum.org

使用火狐可以打開此開發環境,谷歌瀏覽器暫時未打開

在中文文檔中
https://learnblockchain.cn/docs/solidity/

2,開發名詞解釋

(1)錢包

想要玩以太坊相關的游戲,需要下載安裝metamask在火狐瀏覽器

https://blog.csdn.net/lsqzedu/article/details/104727957
ETH Wallet
以太坊客戶端,其實我們可以把它理解為一個智能合約運行環境,它提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能,而EVM是由以太坊客戶端提供的
Remix類似錢包,偏向開發,賬戶部署調用

真正的錢包

插件形式的錢包metamask,轉賬,發送代幣,不具備同步數據功能

在這里插入圖片描述

(2)Solidity

一種語法類似JavaScript的高級語言。語法結構與JavaScript更為接近,支持結構體、面向對象 (封裝、繼承、多態、接口、抽象合約) 等特性,Solidity會被編譯為用于EVM的代碼。最大的優勢在于可以直接與以太坊分布式賬本進行交互。
只有此種語言可以完成與以太坊分布式賬本的交互
在這里插入圖片描述

Solidity被EVM虛擬機解析后,可以操作分布式賬本,而在分布式賬本里,

通常有兩種交易
1,以太坊賬號之間的轉賬交易
2,合約的部署和相應的調用

而java、python等都是間接的訪問賬本,通過solidity

Dapp (去中心化應用,即Decentralized application)
Dapp是可以讓“終端用戶間、終端用戶和資源間、資源和資源間”在沒有中間人的情況下直接進行互動、商定協議或通訊的應用程序

合約一旦部署到以太坊區塊中,回合比特幣的區塊一樣,永久存在此區塊中不可篡改

一個一個的區塊會分到全世界的終端

(3)Ether(以太幣)

以太幣是在以太坊中使用的貨幣的名稱。以太幣被用于支付在EVM(以太坊虛擬機)中進行計算所需的開銷. Gas
公有鏈、聯盟鏈、私有鏈
公有鏈:對所有人開放,任何人都可以參與,聯盟鏈:Hyperledger Fabric.支持權限、多區塊互聯. 私有鏈:對單獨的個人或公司內部開放

區塊鏈權限掌控,聯盟鏈,fabric最有名的,聯盟鏈的開發框架

私有鏈,用于學習開發使用,使用remix部署本地私有鏈的操作,我們沒有創建私有鏈,remix已經將所有工作開發好了,我們只需要開發即可

以后學習工作中很少、幾乎不可能自己創建公鏈,而是將合約部署到以太坊公鏈

(4)Truffle

Truffle是針對基于以太坊的Solidity語言的一套開發框架,對開發,測試,部署實現了非常友好的支持. 讓開發者專注智能合約本身

一門語言成熟不,有沒有相應開發框架

Solidity,可以在百度搜索truffle框架,加速我們的開發應用

通過truffle生成模板,此處涉及到各種前端技術

可以使用JavaScript、vue、nodejs等間接調用solidity操作分布式賬本

(5)Web3.js

Web3.js是以太坊提供的一個Javascript庫,提供了一系列與區塊鏈交互的Javascript對象和函數,包括查看網絡狀態,查看本地賬戶、查看交易和區塊、發送交易、編譯/部署智能合約、調用智能合約等 (提供了點對點網絡交互的API)

Truffle本身使用JavaScript編寫,web3.js

只需要有個錢包,就可以下載分布式賬本里的區塊信息,每個賬本有區塊數據,有合約部署調用,又稱分布式數據庫,只支持solidity的調用,為什么要學習solidity的原因

使用原生語言開發效率不高,維護也不方便

盡量使用truffle框架,
在這里插入圖片描述

JavaScript、vue、nodejs等很方便的與Web3.js交互

https://learnblockchain.cn/2018/01/12/first-dapp/

3,叔伯塊礦工獎勵計算

兩個礦工同時挖到一個區塊

比特幣出現孤塊無獎勵
以太坊有

https://blog.csdn.net/lsqzedu/article/details/104747369

以太坊的獎勵機制和比特幣不同

叔伯塊的獎勵機制,為了提高礦工積極性

叔塊無交易手續費獎勵的,且最后算的得到的獎勵比較少

在這里插入圖片描述

當時的固定報酬是5個以太幣

在這里插入圖片描述

在這里插入圖片描述

發起的地址不同但都去往同一個智能合約(后面有文本標志的)

在這里插入圖片描述

在這里插入圖片描述

此合約完成的是眾籌操作,前面的人是向此合約中打錢

上面的交易都打了感嘆號,說明交易最后沒成功,但尷尬的是交易手續費被扣了

交易失敗和礦工無關

設置合約眾籌金額
假設100個以太幣,超過此則合約交易不再接受

眾籌的以太幣會原樣返回,但扣的手續費就沒了

4,如何查詢區塊計算gas

https://cn.etherscan.com/

https://cn.etherscan.com/blocks

https://www.yitaifang.com/blocks/

以上兩個地址顯示的區塊都是一樣的
在這里插入圖片描述

高度每增加一個區塊高度加1,時間不同

比特幣10分鐘出一個快

而以太坊9到10秒出一個塊

出塊時間縮短,處理能力強比比特幣

單機block下的數字進入區塊查看
在這里插入圖片描述
在這里插入圖片描述

單機進入65的智能合約交易

可以查看如下
在這里插入圖片描述

上方有文本標記的就是智能合約

一旦整個合約部署成功就會生成唯一的哈希地址

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

可以查看合約代碼

在這里插入圖片描述

https://www.jianshu.com/p/a74afe1b171f

以太坊中的計量單位及相互轉換
在這里插入圖片描述
在這里插入圖片描述

手續費= 本區塊消耗的gas(14963259)*當前gas的價值(23.86)得到單位為以太坊
所有區塊獲得的手續費都獨屬于礦工

叔伯塊也是有獎勵的,就是雙花、交叉時的出現的平行塊

5,第一個智能合約

在這里插入圖片描述

合約第一個字母大寫

(1)語法格式

這一張主要是合約部署整個流程

https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#subcurrency

在這里插入圖片描述
在這里插入圖片描述

勾選后,一旦編寫程序,合約會自動編譯

(2)編譯

在這里插入圖片描述

在這里插入圖片描述

(3)部署

編譯成功后就是合約部署,正常部署是本地合約部署到以太坊分布式賬本

但此部署需要消耗以太幣

Remix好處在于本地構建私有鏈,編譯測試后再部署到遠程就節省時間和經歷

在這里插入圖片描述

在這里插入圖片描述

合約的部署和調用都會消耗ges,geth本身也是以太坊的一個貨幣單位,和以太坊換算

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

真實場景合約部署成功后,會有64位的地址,在下個視頻可以根據這個地址調用其變量和其函數來進行智能合約的執行

上面的from就是部署合約的用戶地址

在這里插入圖片描述

所消耗的gas也能在上方看到

和比特幣不同的是,合約的部署也是一筆交易,只要有交易就會生成64位的hash
在這里插入圖片描述

(4)調用

一旦部署成功,使用另一個賬戶調用此合約會花錢

在這里插入圖片描述

在這里插入圖片描述

調用合約花費要少,水很深,調用不同的函數,函數的操作級別不同花費也是不同的

在這里插入圖片描述
在這里插入圖片描述

發現第3個用戶,點擊get函數的沒有消耗以太坊gas,原因是其沒有向變量寫入東西,而是拿東西,分布式賬本寫東西代價很高,但讀沒問題

在這里插入圖片描述

Remix開發工具的使用,智能合約編譯、部署、調用

以太坊開發概念就好理解了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45448.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45448.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45448.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 7.x 系列【23】哨兵模式

有道無術,術尚可求,有術無道,止于術。 本系列Redis 版本 7.2.5 源碼地址:https://gitee.com/pearl-organization/study-redis-demo 文章目錄 1. 概述2. 工作原理2.1 監控2.2 標記下線2.3 哨兵領袖2.4 新的主節點2.5 通知更新 3. …

請求響應(后端必備)

一、請求 1.簡單參數 原始方式: 在原始的web程序中,獲取請求參數,需要通過HttpServletRequest對象手動獲取 RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){String name request.getP…

什么叫價內期權?直接帶你了解期權價內期權怎么使用?!

今天帶你了解什么叫價內期權?直接帶你了解期權價內期權怎么使用?!價內期權是具有內在價值的期權。期權持有人行權時,對看漲期權而言,行權價格低于標的證券結算價格;對看跌期權而言,標的證券結算…

js 請求blob:https:// 圖片

方式1 def get_file_content_chrome(driver, uri):result driver.execute_async_script("""var uri arguments[0];var callback arguments[1];var toBase64 function(buffer){for(var r,nnew Uint8Array(buffer),tn.length,anew Uint8Array(4*Math.ceil(t/…

前端Vue組件化實踐:自定義加載組件的探索與應用

在前端開發領域,隨著業務邏輯復雜度的提升和系統規模的不斷擴大,傳統的開發方式逐漸暴露出效率低下、維護困難等問題。為了解決這些挑戰,組件化開發作為一種高效、靈活的開發模式,受到了越來越多開發者的青睞。本文將結合實踐&…

Java基礎及進階

JAVA特性 基礎語法 一、Java程序的命令行工具 二、final、finally、finalize 三、繼承 class 父類 { //代碼 }class 子類 extends 父類 { //代碼 }四、Vector、ArrayList、LinkedList 五、原始數據類型和包裝類 六、接口和抽象類 JAVA進階 Java引用隊列 Object counter ne…

PostgreSQL行級安全策略探究

前言 最近和朋友討論oracle行級安全策略(VPD)時,查看了下官方文檔,看起來VPD的原理是針對應用了Oracle行級安全策略的表、視圖或同義詞發出的 SQL 語句動態添加where子句。通俗理解就是將行級安全策略動態添加為where 條件。那么PG中的行級安全策略是怎…

搭建基于 ChatGPT 的問答系統

搭建基于 ChatGPT 的問答系統 📣1.簡介📣2.語言模型,提問范式和 token?2.1語言模型?2.2Tokens?2.3Helper function輔助函數(提問范式) 📣3.評估輸入-分類📣4.檢查輸入-審核?4.1審核4.1.1 我…

使用UDP通信接收與發送Mavlink2.0協議心跳包完整示例

1.克隆mavlink源碼 https://github.com/mavlink/mavlink.git 2.進入mavlink目錄,安裝依賴 python3 -m pip install -r pymavlink/requirements.txt 3.生成Mavlink的C頭文件 mavlink % python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated…

1-5歲幼兒胼胝體的表面形態測量

摘要 胼胝體(CC)是大腦中的一個大型白質纖維束,它參與各種認知、感覺和運動過程。盡管CC與多種發育和精神疾病有關,但關于這一結構的正常發育(特別是在幼兒階段)還有很多待解開的謎團。雖然早期文獻中報道了性別二態性,但這些研究的觀察結果…

【Linux網絡】select{理解認識select/select與多線程多進程/認識select函數/使用select開發并發echo服務器}

文章目錄 0.理解/認識回顧回調函數select/pollread與直接使用 read 的效率差異 1.認識selectselect/多線程(Multi-threading)/多進程(Multi-processing)select函數socket就緒條件select的特點總結 2.select下echo服務器封裝套接字…

C++ 類和對象 賦值運算符重載

前言: 在上文我們知道數據類型分為自定義類型和內置類型,當我想用內置類型比較大小是非常容易的但是在C中成員變量都是在類(自定義類型)里面的,那我想給類比較大小那該怎么辦呢?這時候運算符重載就出現了 一 運算符重載概念&…

安全防御:防火墻基本模塊

目錄 一、接口 1.1 物理接口 1.2 虛擬接口 二、區域 三、模式 3.1 路由模式 3.2 透明模式 3.3 旁路檢測模式 3.4 混合模式 四、安全策略 五、防火墻的狀態檢測和會話表技術 一、接口 1.1 物理接口 三層口 --- 可以配置IP地址的接口 二層口: 普通二層…

Java面試題:分庫分表

分庫分表 當數據量非常大時,就需要通過分庫分表的方式進行壓力分攤,避免數據庫訪問壓力過大 分庫分表的前提: 業務數據達到一定量級:單表數據量達到1000w或20g 優化解決不了性能問題 分庫分表策略 垂直拆分 垂直分庫 以表為依據,根據業務將不同表拆分到不同庫中 eg:根…

車載終端_RTK定位|4路攝像頭|駕駛輔助系統ADAS定制方案

現代車輛管理行業的發展趨勢逐漸向智能化和高效化方向發展,車載終端成為關鍵的工具之一。在這個背景下,一款特別為車隊管理行業設計的車載終端應運而生。該車載終端采用8寸多點觸控電容屏,搭載聯發科四核處理器,主頻2.0GHz&#x…

如何安裝node.js

Node.js Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行時環境。 主要特點和優勢: 非阻塞 I/O 和事件驅動:能夠高效處理大量并發連接,非常適合構建高并發的網絡應用,如 Web 服務器、實時聊天應用等。 例如,在…

FeignClient詳解

FeignClient 是 Spring Cloud Open Feign 中的一個注解,它用于定義一個 Feign 客戶端,Feign 是一個聲明式的 Web 服務客戶端,使得編寫 Web 服務客戶端變得更加簡單。以下是 FeignClient 注解的詳細說明: 定義 Feign 客戶端&#x…

網絡安全——防御(防火墻)帶寬以及雙機熱備實驗

12,對現有網絡進行改造升級,將當個防火墻組網改成雙機熱備的組網形式,做負載分擔模式,游客區和DMZ區走FW3,生產區和辦公區的流量走FW1 13,辦公區上網用戶限制流量不超過100M,其中銷售部人員在其…

Swift入門筆記

Swift入門筆記 簡單值控制流函數和閉包對象和類枚舉和結構體并發協議和擴展錯誤處理泛型 簡單值 // 聲明變量 var myVariable 42 myVariable 50// 聲明常量 let myConstant 42// 聲明類型 let implicitInteger 70 let implicitDouble 70.0 let explicitDouble: Double 7…