買以太坊 買以太坊
Ctrl+D 買以太坊
ads

區塊鏈:科普 | 什么是Soilidity?_UIN

Author:

Time:1900/1/1 0:00:00

什么是Soilidity?

Solidity是一種面向合約的高級編程語言,用于實現智能合約。Solidity已經被設計用于以太坊虛擬機。

Solidity===智能合約。

Solidity的代碼封裝在合約中。合約是以太坊應用程序的基本構建塊——所有變量和函數都屬于一個合約,這將是所有項目的起點。

pragmasolidity>=0

studentpublicstudents;//createsanarraynamedstudentsofstudenttypeobjects

函數聲明

functioneatHamburgers(stringmemory_name,uint_amount)public{}

函數的可見性是公開的。有兩種方式可以傳遞參數給Solidity函數:

按值和按引用

eatHamburgers(“vitalik”,100);

私人/公共函數

在Solidity中,函數默認是公共的,因此任何人都可以在網絡中調用公共函數。然而,出于安全考慮,我們將函數設為私有,這樣只有所有者才能調用函數。

function_eatHamburgers(stringmemory_name,uint_amount)private{?

}

按照慣例,私有函數的開頭帶有下劃線。

內部/外部關鍵字

歐易OKEx將于3月18日推出DeFi系列科普視頻:據歐易OKEx官方消息顯示,歐易OKEx將正式推出DeFi系列科普視頻《歐易DeFi20講》,本系列節目由歐易OKEx亞太區CEO馬克金主講。該視頻首期將于3月18日11:00(HKT)推出,用戶可以在歐易OKEx官方學院、金色財經觀看。

《歐易DeFi20講》主要包含DeFi入門指南、全景解讀DeFi生態及如何參與DeFi三個篇章,可以輕松使用戶了解DeFi原理,洞察DeFi價值,掌握DeFi熱點,更多詳情請關注歐易OKEx官方學院。[2021/3/18 18:55:59]

還有兩種類型的函數可見性。內部類似于私有,除了它可以被繼承的合約訪問,即繼承。

外部類似于公共。除了聲明了這個函數的聯系人之外,所有的合約都可以調用這個函數。

在函數中返回

函數聲明包含返回值的類型。

functionsayHi()publicview/purereturns(stringmemory){?

return“Hi”;

}

這些函數可以標記為pure/view。當我們甚至沒有訪問傳遞的數據時,我們就將函數標記為pure。如果函數不修改數據,只查看數據,那么它將被標記為view。

類型轉換

數據類型之間的轉換稱為類型轉換。

uint8a=5;?

uintb=6;

//linebelowthrowsanerrorbecausea*breturnsauint,notuint8:?

火幣推出《一分鐘讀懂DeFi》系列科普視頻:據官方消息,8月24日,火幣推出《一分鐘讀懂DeFi》系列科普視頻,并與微博財經合作冠名播出,布道DeFi認知,助力行業發展《一分鐘讀懂DeFi》是由火幣成長學院打造的業內首個系統全面講解DeFi的系列科普動畫,繼推出《區塊鏈100問》后的再續佳作。《一分鐘讀懂DeFi》系列動畫對DeFi的發展進行系統梳理,適合想要由淺入深、全面系統了解區塊鏈DeFi的人們輕松了解DeFi。目前視頻已由火幣網官方微博發布。[2020/8/24]

uint8c=a*b;

//wehavetotypecastbasauint8tomakeitwork:?

uint8c=a*uint8(b);

事件

事件用于向前端傳達后端區塊鏈網絡上發生了一些事情。

//declaretheevent?

eventNotifyOnFrontend(uintx);?

functionadd(uint_x,uint_y)publicreturns(uint){?

uintresult=_x+_y;?

//fireaneventtoletthefrontendknowthefunctionwascalled?

emitNotifyOnFrontend(result);?

returnresult;?

}

我們的前端代碼應該已經安裝了web3,并且應該監聽“NotifyOnFrontend”事件,這樣才能工作。我們的JavaScript框架或普通JS將不得不監聽這個事件來接收它:

人大附中物理老師李永樂科普拜占庭將軍問題和區塊鏈:5月14日,人大附中物理老師、科普視頻網紅李永樂在其公眾號發布視頻《拜占庭將軍問題是什么?區塊鏈如何防范惡意節點?》。李永樂老師在視頻中對拜占庭將軍問題和區塊鏈進行了講解,他表示,拜占庭將軍問題本質上指的是,在分布式計算機網絡中,如果存在故障和惡意節點,是否能夠保持正常節點的網絡一致性問題。在近40年的時間里,人們提出了許多方案解決這一問題,稱為拜占庭容錯法。例如蘭波特自己提出了口頭協議、書面協議法,后來有人提出了實用拜占庭容錯PBFT算法,在2008年,中本聰發明比特幣后,人們又設想了通過區塊鏈的方法解決這一問題。區塊鏈通過算力證明來保持賬本的一致性,也就是必須計算數學題,才能得到記賬的權力,其他人對這個記賬結果進行驗證,如果是對的,就認可你的結果。與拜占庭問題比起來,就增加了叛徒的成本。[2020/5/14]

YourContract

functiongetUserInfo(string?name)publicviewreturns(uint,string){?

return(allusers.age,allusers.dob);?

}?

}

現在,如果可以用不同的值多次調用setUserInfo,比如:

setuserInfo("Vivek",26,25/05/1995)setuserInfo("Supu",23,01/09/1998)

要獲得這些值,只需傳遞名稱:

getUserInfo("Vivek");//2625/05/1995?

現場 | 火幣中國推出數字經濟及區塊鏈產業科普新書:金色財經現場報道,12月6日,由海南省工業和信息化廳主辦,南南合作金融中心協辦,海南生態軟件園、火幣中國承辦的“海南自貿港數字經濟和區塊鏈國際合作論壇”在海口舉行,這是全球首次區塊鏈部長級論壇。

在本次論壇上,火幣中國舉行了“數字經濟及區塊鏈產業科普系列新書發布”儀式,希望通過教材、專業教育、培訓等多種方式,幫助從業者、高校、研究機構深入了解區塊鏈,從而建立起區塊鏈全局性知識模型,真正推動區塊鏈應用落地。火幣中國CEO袁煜明介紹,將聯合機械工業出版社面向普通高等教育推出《區塊鏈導論》、《區塊鏈系統設計與應用》和《區塊鏈新商業模式分析》系列教材,這是國內最早推動的區塊鏈教材之一;火幣中國還積極參與數字經濟的研究,由中信出版社出版的新書《讀懂Libra》已經上市;由火幣中國負責編寫的區塊鏈技術科普讀物《區塊鏈技術進階指南》將于12月面世;首本行業內最全的區塊鏈應用案例集《區塊鏈產業應用100例》在本次論壇進行了首次刊印。[2019/12/6]

getuserInfo("Supu");//2401/09/1998

全局變量

這些變量可用于像msg.sender這樣的所有函數。我們所編寫的任何Solidity程序,都應該由所有者調用。發送者的地址存儲在msg.sender全局變量中。

require

require用于驗證這兩個語句,并據此做出決定。如果條件為真,則代碼成功運行,否則就拋出錯誤

functionsayHi(stringmemory?name)publicreturns(stringmemory){/Comparesif_nameequals“Vivek”Throwsanerrorandexitsifnottrue.Soliditydoesn’thavenativestringcomparison,sowecomparetheirkeccak256hashestoseeifthestringsareequaq?/?

動態 | 新浪財經:官媒針對區塊鏈的報道從科普宣傳轉向打假監管:據新浪財經今日消息,“1025新政”滿月,一個月間,官媒對區塊鏈的態度風向已轉。據11月初的一項統計,七家黨媒在新政一周內發布了65篇直接相關報道,當時文章中的關鍵詞是數據、產業、安全、創新等,大量文章偏向于科普區塊鏈的概念以及應用介紹,提醒警惕虛擬貨幣炒作的僅有3篇。近期,官媒的批評焦點則紛紛指向借區塊鏈之名進行的虛擬貨幣發行和炒作行為。據統計,新華網、人民網收錄轉載的,以打擊虛擬貨幣或揭露假借區塊鏈行騙為主題的文章,自10月25日到11月25日午間,共28篇;其中,11月19日至11月25日的一周內就高達15篇。這些文章主要圍繞三個觀點展開:厘清區塊鏈和虛擬貨幣的關系,說明二者概念不等;打擊偽“區塊鏈”騙局,或是虛擬貨幣騙局揭露;提醒民眾,區塊鏈不能成為炒作的噱頭,更不是行騙的招牌,需警惕此類活動,理性投資。[2019/11/26]

require(keccak256(abi.encodePacked(name))==keccak256(abi.encodePacked(“Vivek”)));

//Ifit’strue,proceedwiththefunction:?

return“Hi!”;

}?

sayHi(“Vivek”)//executessuccessfully?

sayHi(“Supu”)//throwsanerror

因此,require對于在運行函數之前驗證某些條件必須為真非常有用。

繼承

有時候,與其制定一個非常長的合約,還不如將代碼邏輯拆分為多個合約來組織代碼。

contractAnimal{

functioncatchphrase()publicreturns(stringmemory){?

return“Animal”;

}?

}contractCatisAnimal{

functionanotherCatchphrase()publicreturns(stringmemory){?

return“CatisanAnimal”;

}

}

import

將代碼拆分為多個文件,并使用import來使用另一個文件中的功能。

這通常是在Solidity項目中處理長代碼庫的方式。

存儲和內存

存儲是指永久存儲在區塊鏈上的變量。內存變量是臨時的,在對合約的外部函數調用之間會被刪除。可以把它想象成電腦的硬盤與內存。

與區塊鏈網絡中的其他合約交互

關于這一點,我將寫一篇單獨的文章。現在,保持簡短:

為了與其他合約交互,我們聲明了一個類似object的接口。我們創建了一個合約,并在里面聲明了一個函數,我們想要從另一個合約調用或使用它。函數只是骨架,它不包含主體。

contractGetNumber{?

functiongetNum(uint_num)publicreturns(uint){?

return_num;?

}

假設有一個合約,我們想要使用上面的getNum函數。為此,我們將在項目中創建一個合約,并聲明一個getNum函數框架(沒有函數體)。

contractNumberInterface{?

functiongetNum(uint_num)publicreturns(uint);?

}

現在我們可以從NumberInterface合約中調用getNum函數。

在將合約部署到以太坊后,它就變成了不可變的,也就是說它不能被修改。部署到合約中的初始代碼將永久地停留在區塊鏈上。這就是安全性在Solidity中如此重要的原因之一。如果我們的合約代碼中有一個缺陷,就沒有辦法在以后修補它。必須告訴我們的用戶開始使用具有修復功能的不同智能合約地址。

函數修飾符

函數修飾符看起來就像函數,但是使用關鍵字修飾符而不是關鍵字函數。這些用于特殊情況,例如當您只希望您的所有者而不是所有人做某事時。

這有助于更新DApp的關鍵部分,同時防止其他用戶破壞我們的合約。我處理過的一個用例是——當我們想在執行任何用例之前驗證語句時。

gas

用戶支付gas費來在以太坊網絡上運行合約。gas以以太(以太坊上的貨幣)為單位計算。我們的函數的總gas成本等于它所有單獨操作的總gas成本。

更多關于存儲的內容

存儲內存被永久寫入到區塊鏈中。全世界成千上萬的節點需要將這些數據存儲在它們的硬盤上,并且隨著區塊鏈的增長,這些數據量也會隨著時間的推移而增長。所以這樣做是有代價的。

為了降低成本,我們希望避免將數據寫入存儲,除非絕對必要。有時,這涉及到看似低效的編程邏輯——比如每次調用函數時都要在內存中重新構建數組,而不是簡單地將該數組保存在全局存儲變量中以便快速查找。

因此,建議盡可能使用內存類型,這樣數據就不會永久存儲,從而節省成本。循環在Solidity中將比使用存儲更便宜。所以盡可能for循環中使用內存。這與Java、Python等語言中所做的完全相反,因為for循環的計算成本更高。

For循環

Syntax類似于Javascript。

for(uinti=1;i<=10;i++){//body}

應付修飾符

支付功能是使Solidity和以太坊如此酷的部分原因——它們是一種可以接收以太坊的特殊類型的功能。當我們在一個普通的web服務器上調用一個API函數時,我們不能在調用函數的同時發送美元——也不能發送比特幣。

但在以太坊中,因為貨幣(以太坊)、數據(交易有效載荷)和合約代碼本身都在以太坊上,所以我們可以同時調用一個函數并向合約支付費用。

這允許一些非常有趣的邏輯,比如為了執行一個函數,需要向合約支付一定的費用。

注意:

在以太坊中,當我們在合約上調用一個函數時,我們將其作為交易廣播到網絡上的一個或多個節點。節點在網絡上收集一些交易,試圖成為第一個解決計算密集型數學問題的“工作證明”,然后將這組交易連同他們的工作證明發布為一個塊到網絡的其余部分。

代幣

所以基本上,代幣只是一個合約,它記錄了誰擁有多少代幣,以及一些函數,以便這些用戶可以將他們的代幣轉移到其他地址。

assert與require的差異

Assert類似于require,如果為false則拋出錯誤。assert和require之間的區別是,當一個函數失敗時,require會退還用戶剩余的gas,而assert不會。

Metamask

這是Chrome和Firefox的瀏覽器擴展,允許用戶安全地管理他們的以太坊賬戶和私鑰,并使用這些賬戶與使用Web3.js的網站進行交互。

應用程序二進制接口。

在部署的合約之后,它會在以太坊上得到一個固定的地址,在那里它將永遠存在。在以太坊網絡中部署智能合約后,還會生成一個ABI。基本上,它是以JSON格式表示的合約方法,告訴Web3.js如何以我們的合約能夠理解的方式格式化函數調用。

Web3Js

以太坊的JS前端庫被稱為web3.js。

Source:https://medium.com/coinmonks/learn-all-about-solidity-ethereum-45d709c4de77

Tags:區塊鏈INTETUUIN區塊鏈的幾個大騙局是真的嗎INTOverseCETUS幣uin幣末來有沒有價值

比特幣價格實時行情
EXO:花旗銀行計劃招聘100名員工以加強加密貨幣部門_nexo幣挖礦

據CoinDesk11月23日消息,一位熟悉花旗銀行計劃的人士透露,花旗正在招聘100名員工,以加強其區塊鏈和數字資產部門.

1900/1/1 0:00:00
AVA:“Kleiman訴CSW一案”陪審團無法就判決達成一致,或致案件以無效審判告終_TRAVA價格

據Cointelegraph消息,根據最新消息,如果陪審員們繼續僵持下去,“Kleiman訴CSW一案”可能會以無效審判告終。CSW聲稱,他在發明比特幣時使用了中本聰這個假名.

1900/1/1 0:00:00
PARTY:a16z前合伙人:加密轉向web3、VR轉向元宇宙等是當今科技領域最令人興奮的幾個要點_sparta幣最新消息

巴比特訊,12月6日,A16Z前合伙人,著名分析師BenedictEvans發布了關于2021年和2022年技術的題為“通往未來的三部曲”的新演講.

1900/1/1 0:00:00
ORA:融資新聞 | 加密貨幣存儲公司Anchorage完成3.5億美元D輪融資,高盛參投_HORA

據Decrypt12月15日報道,增長迅速的加密貨幣存儲公司Anchorage在今年1月獲得了聯邦銀行執照,該公司宣布已從資產管理巨頭KKR、高盛和其他公司籌集了3.5億美元.

1900/1/1 0:00:00
MIC:比特幣燈塔MicroStrategy子彈快要用光 面對巨額利息 下一步怎么辦?_Pumpanomics

吳說作者|吳卓鋮 本期編輯|ColinWuMicroStrategy的債務“子彈”2020年12月9日,MicroStrategy宣布發行本金總額為6.5億美元的可轉換優先票據.

1900/1/1 0:00:00
元宇宙:摩根士丹利:到2030年,奢侈品牌的NFT市場規模可能會達到560億美元_Diamond Hands

原標題:《耐克、阿迪、LV等服裝品牌的元宇宙暢想》近些日子,元宇宙相關的話題非常的火熱。元宇宙被譽為是下一代互聯網。許多科技公司都因為元宇宙未來的巨大潛力而紛紛布局元宇宙相關業務.

1900/1/1 0:00:00
ads