區(qū)塊鏈常見問題

1:以太坊的共識算法

在以太坊中,默認使用ethash(pow)共識算法進行網(wǎng)絡(luò)正確性的保障,這種共識算法采用的是工作量證明的機制,也就是我們所熟知的“挖礦”。
在使用pow算法一段時間之后產(chǎn)生了一系列問題,大家把目光轉(zhuǎn)向了casper(POS)共識算法,產(chǎn)生了共識算法Clique,這種算法的原理十分簡單,即網(wǎng)絡(luò)中的每一個區(qū)塊是由某一個認證節(jié)點進行認證的,其他節(jié)點僅需要驗證認證信息來判斷該區(qū)塊是否合法。

2:POS以及拜占庭算法,共識算法研究

POS:POS就是“股權(quán)證明”,Proof of stake,即直接證明你持有的份額。除了混合性的PPC之外,真正的POS幣是沒有挖礦過程的,也就是在創(chuàng)世區(qū)塊內(nèi)就寫明了股權(quán)證明,之后的股權(quán)證明只能轉(zhuǎn)讓,不能挖礦。
也稱股權(quán)證明,類似于財產(chǎn)儲存在銀行,這種模式會根據(jù)你持有數(shù)字貨幣的量和時間,分配給你相應(yīng)的利息。簡單來說,就是一個根據(jù)你持有貨幣的量和時間,給你發(fā)利息的一個制度,在股權(quán)證明POS模式下,有一個名詞叫幣齡,每個幣每天產(chǎn)生1幣齡,比如你持有100個幣,總共持有了30天,那么,此時你的幣齡就為3000,這個時候,如果你發(fā)現(xiàn)了一個POS區(qū)塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區(qū)塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那么在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意思了,持幣有利息。
拜占庭算法:
拜占庭(BFT)是一類分布式計算領(lǐng)域的容錯技術(shù),拜占庭容錯來源于拜占庭將軍問題,拜占庭將軍問題是Leslie Lamport(2013年的圖靈講得主)用來為描述分布式系統(tǒng)一致性問題(Distributed Consensus)在論文中抽象出來一個著名的例子。
? Lamport 對拜占庭將軍的問題的研究表明,當 n > 3m 時,即叛徒的個數(shù) m 小于將軍總數(shù)的 n 的 1/3 時,通過口頭同步通信(假設(shè)通信是可靠的),可以構(gòu)造同時滿足“一致性”和“正確性”的解決方法,即將軍們可以達成一致的命令
? 安全性:任何已經(jīng)完成的請求都不會被更改,它可以在以后請求看到。在區(qū)塊鏈系統(tǒng)中,可以理解為,已經(jīng)生成的賬本不可篡改,并且可以被節(jié)點隨時查看。
活性:可以接受并且執(zhí)行非拜占庭客戶端的請求,不會被任何因素影響而導致非拜占庭客戶端的請求不能執(zhí)行。在區(qū)塊鏈系統(tǒng)中,可以理解為,系統(tǒng)需要持續(xù)生成區(qū)塊,為用戶記賬,這主要靠挖礦的激勵機制來保證。

3、智能合約Gas計算

交易消耗的gas數(shù)量(gasUsed)與交易中單位gas的價格(gasPrice)的積(用以太幣計算)
交易費 = gasUsed * gasPrice

4、回退函數(shù)

一個合約只能有一個回退函數(shù),無參無返回值,為了接受ether,需要有payable標識,當調(diào)用的函數(shù)名錯誤或有ether交易時會調(diào)用回退函數(shù)

五、send函數(shù)附屬的gas,transfer函數(shù)

1.使用call調(diào)用函數(shù)的時候,可以附加以太幣和gas,分別用.value()和.gas()表示。
2.直接使用函數(shù)名稱和使用bytes4和keccak算法調(diào)用函數(shù)本質(zhì)上是一樣的,都可以附加以太幣和gas。
3.直接調(diào)用address.call()函數(shù)不帶任何參數(shù),相當于調(diào)用了一個不存在的函數(shù),會調(diào)用對應(yīng)的回退函數(shù)。如果有附加的value,則回退函數(shù)必須添加payable關(guān)鍵字,否則執(zhí)行失敗。
4.call函數(shù)的返回值為 bool;

send()發(fā)送調(diào)用:
1.如果我們要在合約中通過send()函數(shù)接收,就必須定義fallback函數(shù),否則會拋出異常;
2.fallback函數(shù)必須增加payable關(guān)鍵字,否則send()執(zhí)行結(jié)果將會始終為false;
3.調(diào)用發(fā)送函數(shù)的函數(shù)不能推薦view和constant修飾,否則發(fā)送失敗;

transfer(uint256 amount):
發(fā)送給定數(shù)量的ether到某個地址,以wei為單位。失敗時拋出異常。

六、智能合約安全接觸過哪些

1.重入漏洞
當以太坊智能合約將Ether發(fā)送給未知地址(地址來源于輸入或是調(diào)用者)時,可能會發(fā)生此攻擊。
攻擊者可以在地址對應(yīng)合約的Fallback函數(shù)中,構(gòu)建一段惡意代碼。當易受攻擊的合約將Ether發(fā)送給攻擊者構(gòu)建的惡意合約地址時,將執(zhí)行Fallback函數(shù),執(zhí)行惡意代碼。惡意代碼可以是重新進入易受攻擊的合約的相關(guān)代碼,這樣攻擊者可以重新進入易受攻擊合約,執(zhí)行一些開發(fā)人員不希望執(zhí)行的合約邏輯
*解決方式:
1.在將Ether發(fā)送給外部合約時使用內(nèi)置的transfer() 函數(shù)。transfer轉(zhuǎn)賬功能只發(fā)送2300 gas不足以使目的地址/合約調(diào)用另- -份合約(即重入發(fā)送合約)。
2.確保所有改變狀態(tài)變量的邏輯發(fā)生在Ether被發(fā)送出合約(或任何外部調(diào)用)之前。
3.引入互斥鎖。也就是說,要添加一個在代碼執(zhí)行過程中鎖定合約的狀態(tài)變量,阻止重入調(diào)用。
2、算法溢出漏洞
以太坊虛擬機(EVM)為整數(shù)指定固定大小的數(shù)據(jù)類型。這意味著一個整型變量只能有一定范圍的數(shù)字表示。例如,一個uint8,只能存儲在范圍[O, 255]的數(shù)字。試圖存儲256到一個uint8將變成0。不加注意的話,只要沒有檢查用戶輸入又執(zhí)行計算,導致數(shù)字超出存儲它們的數(shù)據(jù)類型允許的范圍,Solidity中的變量就可以被用來組織攻擊。當執(zhí)行操作需要固定大小的變量來存儲超出變量數(shù)據(jù)類型范圍的數(shù)字(或數(shù)據(jù))時,會發(fā)生數(shù)據(jù)上溢/下溢。

*解決方式:防止溢出漏洞的(當前)常規(guī)技術(shù)是使用或建立取代標準數(shù)學運算符的數(shù)學庫;加法,減法和乘法(除法被排除在外,因為它不會導致上溢/下溢,并且EVM除以0時會丟出錯誤)。
0ppenZepplin在構(gòu)建和審計Ethereum 社區(qū)可以利用的安全庫方面
做得非常出色。特別是,他們的SafeMath 是一個用來避免.上溢/下溢漏洞的參考或庫。

3、可見性漏洞
函數(shù)的可見性默認是public。因此,不指定任何可見性的函數(shù)就可以由用戶在外部調(diào)用。當開發(fā)人員錯誤地忽略應(yīng)該是私有的功能(或只能在合約本身內(nèi)調(diào)用)的可見性說明符時,問題就出現(xiàn)了。
*解決方式:總是指定合約中所有功能的可見性、即便這些函數(shù)的可見性本就有意設(shè)計成public,這是一種很好的做法。最近版本的Solidity 將在編譯過程中為沒有明確設(shè)置可見性的函數(shù)顯示警告,以鼓勵這種做法。
*解決方式:總是指定合約中所有功能的可見性、即便這些函數(shù)的可見性本就有意設(shè)計成public,這是一種很好的做法。最近版本的Solidity 將在編譯過程中為沒有明確設(shè)置可見性的函數(shù)顯示警告,以鼓勵這種做法。

4、條件競爭/搶先提交
與大多數(shù)區(qū)塊鏈一樣,以太坊節(jié)點匯集交易并將其打包成塊。一旦礦工獲得了共識機制(目前以太坊上實行的是ETHASH 工作量證明算法)的一個解,這些交易就被認為是有效的。挖出該區(qū)塊的礦工同時也選擇將交易池中的哪些交易包含在該區(qū)塊中,一般來說是根據(jù)交易的gasPr ice來排序。在這里有一個潛在的攻擊媒介。攻擊者可以監(jiān)測交易池,看看其,中是否存在問題的解決方案(如下合約所示)、修改或撤銷攻擊者的權(quán)限的交易或攻擊者不想要的合約狀態(tài)變更然后攻擊者可以從該中獲取數(shù)據(jù)并創(chuàng)建一個gasPrice 更高的交易,(讓自己的交易) 搶在原始交易之前被打包到一個區(qū)塊中。
*解決方式:可以采用的一種方法是在合約中創(chuàng)建邏輯,設(shè)置gasPrice的上限,可以防止用戶增加 gasPrice 并因超出上限而獲得優(yōu)先的交易排序。這種預防措施只能緩解任意用戶。在這種情況下,曠工仍然可以攻擊合約,因為無論Gas價格如何,他們都可以安排包含在他們的塊中的交易。
一個更強大的方法是盡可能使用 commit-reveal 方案。這種方案規(guī) 定用戶使用隱藏信息(通常是哈希值)發(fā)送交易。在交易已包含在塊中后, 用戶將發(fā)送一個交易來顯示已發(fā)送的數(shù)據(jù)(reveal 階段)。這種方法可 以防止礦工和用戶從事?lián)屜冉灰祝驗樗麄儫o法確定交易的內(nèi)容。然而, 這種方法不能隱藏交易價值(在某些情況下,這是需要隱藏的有價值的信 息)。ENS 智能合約允許用戶發(fā)送交易,其 commit 數(shù)據(jù)包括他們愿意花 費的金額。用戶可以發(fā)送任意值的交易。在 reveal 階段,用戶可以取出 交易中發(fā)送的金額與他們愿意花費的金額之間的差額。

谷歌給出了解決方案:https://docs.google.com/document/d/ 1YLPtQxZu1UAvO9cZ1O2RPXBbT0mooh4DYKjA_jp-RLM/edit,大家翻墻查看 即可。

7、眾籌合約,發(fā)幣合約

發(fā)幣合約:要求我們在實現(xiàn)代幣的時候必須要遵守的協(xié)議,如指定代幣名稱、總量、實現(xiàn)代幣交易函數(shù)等,只有支持了協(xié)議才能被以太坊錢包支持。
眾籌合約:眾籌就是我需要做一件事需要錢,我就把我的想法告訴大家,看看大家有沒有興趣投錢,在規(guī)定的時間內(nèi)投夠那些錢,到時候大家都是原始股東,如果在規(guī)定的時間內(nèi)沒有幕到那么多錢,然后就把那些錢退給大家。為了解決信任問題運用區(qū)塊鏈技術(shù),借助于智能合約??梢詫崿F(xiàn)當募資完成時,募資款自動打到指定賬戶,募資未完成時,自動退還到各自的賬戶。這就不用依靠第三方信用擔保了。

8、事件使用

事件使用:事件強調(diào)功能,一種行為;事件發(fā)生后被記錄到區(qū)塊鏈上成為日志。事件可以用來做操作記錄,存儲日志。
在solidity中,使用event關(guān)鍵字來定義一個事件,并且事件在合約中可以被繼承。

9、內(nèi)存區(qū)域如何劃分

storage 會永久保存合約狀態(tài)變量,永久存貯在區(qū)塊鏈中,開銷最大
memory 僅保存臨時變量,函數(shù)調(diào)用之后釋放,開銷很小 stack 保存很小的局部變量,幾乎免費使用,但有數(shù)量限制。

10、library(庫)

庫與合約類似,它也部署在一個指定的地址上,然后通過EVM的特性DELEGATECALL來復用代碼。
(1)如果一個庫里只包含內(nèi)部函數(shù)或結(jié)構(gòu)體或枚舉,則不需要部署庫,因為因為庫合約是一個獨立的代碼,它僅可以訪問主調(diào)合約明確提供的狀態(tài)變量。
(2)無狀態(tài)變量,不能繼承或被繼承,不能接收以太幣,不能銷毀一個庫。不會修改狀態(tài)變量庫函數(shù)只能通過直接調(diào)用(不用DELEGATECALL),是因為其被認為是狀態(tài)無關(guān)的。

11、geth客戶端使用過嗎

(1)Geth是以太坊的客戶端。
(2)常用的API:Admin(管理員)、 eth(以太幣)、web3、miner(礦工)、net(網(wǎng)絡(luò))、personal(個人)、shh、debug(調(diào)試)和 txpool(工具)。
(3)geth客戶端的帳戶存儲在keystore目錄中。
(4)為了進行交易,必須先解鎖該賬戶 ,可以傳入賬戶地址或賬戶序號來解鎖。

12、熟悉以太坊底層源碼
13、什么是重入攻擊,如何避免

調(diào)用外部合約或?qū)⒁蕴珟虐l(fā)送到地址的操作要求合約提交外部調(diào)用。這些外部調(diào)用可以被攻擊者劫持,從而迫使合約執(zhí)行更多的代碼(即通過 fallback 回退函數(shù)),包括回調(diào)原合約本身。所以,合約代碼執(zhí)行過程中將可以“重入”該合約,有點像編程語言里面的間接遞歸函數(shù)調(diào)用。
解決方案:
1、(在可能的情況下)將 ether 發(fā)送到外部合約時使用內(nèi)置的 transfer() 函數(shù)。transfer() 函數(shù)僅發(fā)送 2300 Gas 給外部調(diào)用,這不足以使目的地址合約調(diào)用另一個合約(即重入原合約)。

2、確保所有改變狀態(tài)變量的邏輯,都發(fā)生在以太幣被發(fā)送出合約(或任何外部調(diào)用)之前。最好將對未知地址的外部調(diào)用,作為本地函數(shù)或代碼的最后一個操作。這在以太坊文檔中稱為檢查-效果- 交互(checks-effects-interactions)模式。

3、引入互斥鎖。也就是說,添加一個狀態(tài)變量,在代碼執(zhí)行期間鎖定合約,防止重入調(diào)用。

14、智能合約安全問題

算術(shù)溢出問題,當執(zhí)行操作需要固定大小的變量來存儲超出變量數(shù)據(jù)類型范圍的數(shù) 字(或數(shù)據(jù))時,會發(fā)生數(shù)據(jù)上溢/下溢 ,使用OppenZepplin.safeMath庫解決
重入攻擊問題,向以太坊合約賬戶進行轉(zhuǎn)賬,發(fā)送Ether的時候,會執(zhí)行合約賬戶對 應(yīng)合約代碼的回調(diào)函數(shù)(fallback)。 在以太坊智能合約中,進行轉(zhuǎn)賬操作,一旦向被攻擊者劫持的合約地址發(fā)起轉(zhuǎn)賬操作,迫使執(zhí)行攻擊合約的回調(diào)函數(shù),回調(diào)函數(shù)中包含回調(diào)自身代碼,將會導致代碼執(zhí)行“重新進入”合約。這種合約漏洞,被稱為“重入漏洞”,
第一種技術(shù)是(在可能的情況下)將 ether 發(fā)送到外部合約時使用內(nèi)置的 transfer() 函數(shù)。transfer() 函數(shù)僅發(fā)送 2300 Gas 給外部調(diào)用,這不足以使目的地址合約調(diào)用另一個合約(即重入原合約)。

第二種,是確保所有改變狀態(tài)變量的邏輯,都發(fā)生在以太幣被發(fā)送出合約(或任何外部調(diào)用)之前。在 EtherStore 示例中,EtherStore.sol 的第18和19行應(yīng)放在第17行之前。最好將對未知地址的外部調(diào)用,作為本地函數(shù)或代碼的最后一個操作。這在以太坊文檔中稱為檢查-效果- 交互(checks-effects-interactions)模式。

第三種是引入互斥鎖。也就是說,添加一個狀態(tài)變量,在代碼執(zhí)行期間鎖定合約,防止重入調(diào)用。
Ether漏洞
(1)自毀selfdestruct(address)刪除所有字節(jié)碼,并將Ether發(fā)送到指定地址
(2)預先發(fā)送的Ether:可以提前計算出地址,并且將Ether存入到合約中,避免依賴合約的余額的確切值,用狀態(tài)變量來記錄
可見性漏洞
函數(shù)的功能為public 解決:指定合約功能的可見性
隨機數(shù)誤區(qū)
Solidity沒有rand()功能,暫時沒有很好的解決方案
外部合約的引用
外部消息調(diào)用時被攻擊者利用
解決:1、new創(chuàng)建合約 2、已知外部合約地址。對所有外部地址進行硬編碼
短地址攻擊
第三方應(yīng)用程序不驗證輸入時,交易所不驗證ERC20 Token的地址
解決:將所有輸入發(fā)送到區(qū)塊鏈之前進行驗證
未檢查返回值
call函數(shù)調(diào)用時,不會發(fā)生回滾
解決:使用transfer()功能,transfer會出發(fā)回滾
條件競爭/搶先提交
攻擊之后設(shè)置gasPrice更高的交易使自己的先被驗證
解決:1、設(shè)置gasPrice的上限,防止超出2、使用commit-reveal方案

15、函數(shù)調(diào)用方式,view和pure的區(qū)別,constant修飾符的含義

view是只讀的,能看到某個值,而pure即不可讀也不可寫,constant修飾符等同于view

16、solidity多繼承怎么實現(xiàn),接口的使用

(1)solidity使用is繼承,多繼承(一個子類同時集成多個父類),多個父類里有重名的函數(shù)和方法時,遵循最遠機制。
(2)使用interface關(guān)鍵詞修飾。這樣的合約不能被編譯,但它們可以用作父合約被繼承。
無法繼承其他合約或接口、 無法定義構(gòu)造函數(shù)、無法定義變量、無法定義結(jié)構(gòu)體、無法定義枚舉。

17、函數(shù)修飾器

使用關(guān)鍵字modifier定義,使用函數(shù)修飾器修飾的代碼,會默認追加在函數(shù)修飾器 “_” 位置,當修飾器沒有執(zhí)行時,函數(shù)會返回對應(yīng)類型的默認值。有多個函數(shù)修飾器時,會按照書寫順序依次執(zhí)行。

18、https與Http區(qū)別

HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個客戶端和服務(wù)器端請求和應(yīng)答的標準(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。
HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細內(nèi)容就需要SSL。
HTTPS和HTTP的區(qū)別主要如下
1、https協(xié)議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
  2、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。
  3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
  4、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸、身份認證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。

19、守護進程

守護進程的工作原理
守護進程就是一個在后臺運行的一個程序,主要功能就是提供一些系統(tǒng)的服務(wù)。
守護進程分為兩種類型:獨立(Standalone)守護進程和臨時(Transient)守護進程,由超級守護進程(super daemon)控制的守護進程。
獨立守護進程的工作方式是:當用戶或程序提出需求時,獨立守護進程會自己為用戶或程序提供所需的服務(wù)。
臨時守護進程的工作方式是:當用戶或程序提出需求時會向 xinetd 超級守護進程要求服務(wù),之后,xinetd 再調(diào)用相應(yīng)的臨時守護進程,最后再由這個臨時守護進程為用戶或程序提供所需的服務(wù)。

20、TCP和UDP的區(qū)別

TCP---傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。當客戶和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數(shù)據(jù)。TCP提供超時重發(fā),丟棄重復數(shù)據(jù),檢驗數(shù)據(jù),流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。
UDP—用戶數(shù)據(jù)報協(xié)議,是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報發(fā)送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數(shù)據(jù)報前不用在客戶和服務(wù)器之間建立一個連接,且沒有超時重發(fā)等機制,故而傳輸速度很快

21、其他的公鏈,比如MOAC ,EOS ,NEO等,他們用的什么共識算法?

MOAC:POW工作量共識機制。優(yōu):完全去中心化,節(jié)點自由進出。缺:共識達成的周期較長,不適合商業(yè)應(yīng)用。
EOS:DPos股份授權(quán)證明機制。優(yōu):大幅縮小參與驗證和記賬節(jié)點的數(shù)量,可以達到秒級的共識驗證。缺:整個共識機制還是依賴于代幣,很多商業(yè)應(yīng)用是不需要代幣存在的。
NEO:dBFT拜占庭容錯算法。優(yōu):可以容忍任意類型的錯誤,記賬由多人協(xié)同完成,每個區(qū)塊不會有最終性,無分叉。缺:當1/3或以上記賬人停止工作后,系統(tǒng)將無法提供服務(wù)。

22、子鏈、側(cè)鏈:

側(cè)鏈:指的是與主鏈相平行的單獨一個區(qū)塊鏈,但是它和主鏈之間可以通過相互了解的協(xié)議互聯(lián)。作為主鏈的補充,側(cè)鏈可以提供一些主鏈不能提供的功能。但是這個互聯(lián)對共識機制有要求,而且側(cè)鏈必須有與主鏈相當?shù)乃懔Σ拍鼙WC側(cè)鏈貨幣的安全性。

子鏈:指的是在主鏈的平臺來派生出來的具有其他功能的區(qū)塊鏈。這些子鏈不能單獨存在,必須通過主鏈提供的基礎(chǔ)設(shè)施才能運行,并且免費獲得主鏈的全部用戶。

23、單例模式

單例模式:是一種常用的軟件設(shè)計模式。在它的核心結(jié)構(gòu)中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統(tǒng)中,應(yīng)用該模式的類一個類只有一個實例。即一個類只有一個對象實例
懶漢:在初始化類的時候,不創(chuàng)建唯一的實例,而是等到真正需要用到的時候才創(chuàng)建。必須加上同步,否則有可能依然創(chuàng)建多個實例。
餓漢:在初始化的時候,就創(chuàng)建了唯一的實例,不管是否需要用到。不需要自己加同步,一定產(chǎn)生唯一的實例。
懶漢模式下,不適合使用太頻繁的對象。
而在餓漢模式下,不管是否用到,都會初始化實例。
餓漢式是線程安全的,在類創(chuàng)建的同時就已經(jīng)創(chuàng)建好一個靜態(tài)的對象供系統(tǒng)使用,以后不在改變
詳情:https://blog.csdn.net/qq_34207444/article/details/79341334

24、觀察者模式,

觀察者模式:觀察者模式定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時觀察一個主題對象。這個主題對象在發(fā)生變化時,會通知所有的觀察者對象,使它們能夠更新自己。
觀察者:將自己注冊到被觀察對象中,被觀察對象將觀察者存放在一個容器里。
被觀察:被觀察對象發(fā)生了某種變化,從容器中得到所有注冊過的觀察者,將變化通知觀察者。
撤銷觀察:觀察者告訴被觀察者要撤銷觀察,被觀察者從容器中將觀察者去除。

25、STO 、ICO、IPO、USDT

IPO(Initial Public Offerings)首次公開募股
ICO(是Initial Coin Offering縮寫),首次幣發(fā)行
STO(Security Token Offer)指的是證券型通證發(fā)行,STO就像是ICO與IPO的一種折中,既受到一定程度監(jiān)管,又可以使證券實通證化,使流通方式更靈活,降低項目方的募資門檻
USDT:中文名稱為泰達幣,等價于法幣的代幣,和美元一比一,相當于數(shù)字貨幣的法幣。

26、golang高并發(fā)實現(xiàn)的基礎(chǔ)

協(xié)程

27、死鎖和死鎖解決方案

使用信道是要考慮的一個重要因素是死鎖(Deadlock)只讀未寫與只寫未讀都會觸發(fā)死鎖,并觸發(fā) panic 。
用select方式阻止,在default中放置處理方式。
使用緩沖信道。
簡單來講。把沒取走的數(shù)據(jù)取走,沒放入的數(shù)據(jù)放入, 因為無緩沖信道不能承載數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容