1. 區塊鏈技術入門,涉及哪些編程語言
技術與語言無關。正常情況下同樣的技術,在有許可權的情況下多數語言都可以實現同樣的功能。
你說的應該是虛擬幣上的技術,這個源碼通常是C++開發的。
2. 區塊鏈的模型架構是什麼
目前市場上區塊鏈培訓課程跨度很大,課程內容和授課形式也是五花八門。
區塊鏈
1、編程基礎入門
計算機軟硬體基礎、字元集及字元編碼、HTMLCSS(含HTML5CSS3)、ECMABOMDOM、jQuery、node.js、Ajax及Express
2、Go編程語言
Go基本語法、流程式控制制、函數及數據、錯誤處理、Go面向對象編程、Go並發編程、Go網路編程、Go安全編程、Go進階編程(goroutine、channel)、資料庫MySQL、LevelDB
3、區塊鏈1.0——比特幣Bitcoin
比特幣原理、比特幣系統架構、密碼演算法(Go語言實現)、共識演算法(Go語言實現)、比特幣交易原理及交易腳本、比特幣RPC編程(node.js實現)、比特敏賀臘幣源碼解析
4、區塊鏈2.0——以太坊Ethereum
以太坊工作原理及基礎架構、以太坊基本概念(賬戶、交易、Gas)、以太坊錢包Mist及Metamask、以太坊交易、ERC20標准Token開發部署、以橋滑太坊開發IDE——remix-ide、智能合約與Solidity、Solidity部署、備份及調用、框架技術:truffle及web3、DApp開發實戰、Geth
5、區塊鏈3.0——超級賬本之Fabric
超級賬本項目介紹、Fabric部署和使用拍絕、Fabric配置管理、Fabric架構設計、Fabric CA應用與配置、應用開發實戰。
3. 以太坊多節點私有鏈部署
假設兩台電腦A和B
要求:
1、兩台電腦要在一個網路中,能ping通
2、兩個節點使用相同的創世區塊文件
3、禁用ipc;同時使用參數--nodiscover
4、networkid要相同,埠號可以不同
1.4 搭建私有鏈
1.4.1 創建目錄和genesis.json文件
創建私有鏈根目錄./testnet
創建數據存儲目錄./testnet/data0
創建創世區塊配置文件./testnet/genesis.json
1.4.2 初始化操作
cd ./eth_test
geth --datadir data0 init genesis.json
1.4.3 啟動私有節點
1.4.4 創建賬號
personal.newAccount()
1.4.5 查看賬號
eth.accounts
1.4.6 查看賬號余額
eth.getBalance(eth.accounts[0])
1.4.7 啟動&停止挖礦
啟動挖礦:
miner.start(1)
其中 start 的參數表示挖礦使用的線程數。第一次啟動挖礦會先生成挖礦所需的 DAG 文件,這個過程有點慢,等進度達到 100% 後,就會開始挖礦,此時屏幕會被挖礦信息刷屏。
停止挖礦,在 console 中輸入:
miner.stop()
挖到一個區塊會獎勵5個以太幣,挖礦所得的獎勵會進入礦工的賬戶,這個賬戶叫做 coinbase,默認情況下 coinbase 是本地賬戶中的第一個賬戶,可以通過 miner.setEtherbase() 將其他賬戶設置成 coinbase。
1.4.8 轉賬
目前,賬戶 0 已經挖到了 3 個塊的獎勵,賬戶 1 的余額還是0:
我們要從賬戶 0 向賬戶 1 轉賬,所以要先解鎖賬戶 0,才能發起交易:
發送交易,賬戶 0 -> 賬戶 1:
需要輸入密碼 123456
此時如果沒有挖礦,用 txpool.status 命令可以看到本地交易池中有一個待確認的交易,可以使用 eth.getBlock("pending", true).transactions 查看當前待確認交易。
使用 miner.start() 命令開始挖礦:
miner.start(1);admin.sleepBlocks(1);miner.stop();
新區塊挖出後,挖礦結束,查看賬戶 1 的余額,已經收到了賬戶 0 的以太幣:
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
用同樣的genesis.json初始化操作
cd ./eth_test
geth --datadir data1 init genesis.json
啟動私有節點一,修改 rpcport 和port
可以通過 admin.addPeer() 方法連接到其他節點,兩個節點要要指定相同的 chainID。
假設有兩個節點:節點一和節點二,chainID 都是 1024,通過下面的步驟就可以從節點二連接到節點一。
首先要知道節點一的 enode 信息,在節點一的 JavaScript console 中執行下面的命令查看 enode 信息:
admin.nodeInfo.enode
" enode://@[::]:30303 "
然後在節點二的 JavaScript console 中執行 admin.addPeer(),就可以連接到節點一:
addPeer() 的參數就是節點一的 enode 信息,注意要把 enode 中的 [::] 替換成節點一的 IP 地址。連接成功後,節點一就會開始同步節點二的區塊,同步完成後,任意一個節點開始挖礦,另一個節點會自動同步區塊,向任意一個節點發送交易,另一個節點也會收到該筆交易。
通過 admin.peers 可以查看連接到的其他節點信息,通過 net.peerCount 可以查看已連接到的節點數量。
除了上面的方法,也可以在啟動節點的時候指定 --bootnodes 選項連接到其他節點。 bootnode 是一個輕量級的引導節點,方便聯盟鏈的搭建 下一節講 通過 bootnode 自動找到節點
參考: https://cloud.tencent.com/developer/article/1332424
4. 使用Nodejs部署智能合約
實現智能合約的方式很多種,可以用truffle框架來實現,編譯,部署。
這里介紹一種簡單的使用nodejs來實現,編譯,部署的方法。
創建一個nodejs項目,實現一個簡單的智能合約。
這個合約實現了一個造幣和轉幣的邏輯。
我們的合約是運行在evm上面的位元組碼,solidity是靜態語言,需要通過編譯器生成evm的位元組碼。
調用 node compile.js ,對BaseToken進行編譯,生成位元組碼。web3中提供了一個部署合約的介面,使用如下,
利用編譯生成的abi和bytecode,創建一個合約對象,然後進行發布,等待著非同步執行的方法輸出合約地址 contractAddress ,這樣就完成了部署。不過這種方式有一個問題,就是在發布合約時,你的私鑰處於聯網狀態,
處於安全策略,我們需要盡量避免私鑰在聯網狀態。
以太坊上部署合約是向空地址發送一個附有位元組碼的簽名交易,其中發送者就是這個合約的擁有者。因此我們只需要將合約構建成一筆交易,我們在無網狀態下對這筆交易進行簽名,然後將簽名發送到以太坊網路中。這樣能夠降低我們私鑰被泄漏的風險。
對合約的簽名方法如下:
以上對一個合約簽名,這里需要注意的問題是,to的地址需要是,空地址。
完成簽名之後,我們把這筆交易發送出去就好,最簡單的方法就是使用 etherscan的發送Tx的方式 ,一旦發送完成,部署完成,就可以看到合約地址。
5. 幣圈內的一些專業術語是什麼
26個區塊鏈行業常用名詞解釋1、Blockchain——區塊鏈
區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密貨幣演算法等計算機技術的新型應用模式。是一個共享的分布式賬本,其中交易通過附加塊永久記錄。
2、Block——區塊
在比特幣網路中,數據會以文件的形式被永久記錄,我們稱這些文件為區塊。一個區塊是一些或所有最新比特幣交易的記錄集,且未被其他先前的區塊記錄。
3、Node——節點
由區塊鏈網路的參與者操作的分類帳的副本。
4、去中心化
去中心化是一種現象或結構,必須在擁有眾多節點的系統中或在擁有眾多個體的群中才能出現或存在。節點與節點之間的影響,會通過網路而形成非線性因果關系。
5、共識機制
共識機制是通過特殊節點的投票,在很短的時間內完成對交易的驗證和確認;對一筆交易,如果利益不相乾的若干個節點能夠達成共識,我們就可以認為全網對此也能夠達成共識。
6、Pow——工作量證明
Proofof Work,是指獲得多少貨幣,取決於你挖礦貢獻的工作量,電腦性能越好,分給你的礦就會越多。
7、PoS——權益證明
Proofof Stake,根據你持有貨幣的量和時間進行利息分配的制度,在POS模式下,你的「挖礦」收益正比於你的幣齡,而與電腦的計算性能無關。
8、智能合約
智能合約是一種旨在以信息化方式傳播、驗證或執行合約的計算機協議。智能合約允許在沒有第三方的情況下進行可信交易,這些交易可追蹤且不可逆轉。
9、時間戳
時間戳是指字元串或編碼信息用於辨識記錄下來的時間日期。國際標准為ISO 8601。
10、圖靈完備
圖靈完成是指機器執行任何其他可編程計算機能夠執行計算的能力。
11、Dapp——去中心化應用
是一種開源的應用程序,自動運行,將其數據存儲在區塊鏈上,以加密貨幣令牌的形式激勵,並以顯示有價值證明的協議進行操作。
12、DAO——去中心化自治組織
可以認為是在沒有任何人為干預的情況下運行的公司,並將一切形式的控制交給一套不可破壞的業務規則。
13、PrivateKey——私鑰
私鑰是一串數據,它是允許你訪問特定錢包中的令牌。它們作為加密貨幣,除了地址的所有者之外,都被隱藏。
14、PublicKey——公鑰
是和私鑰成對出現的,公鑰可以算出幣的地址,因此可以作為擁有這個幣地址的憑證。
15、礦機
嘗試創建區塊並將其添加到區塊鏈上的計算設備或者軟體。在一個區塊鏈網路中,當一個新的有效區塊被創建時,系統一般會自動給予區塊創建者(礦機)一定數量的代幣,作為獎勵。
16、礦池
是一個全自動的挖礦平台,使得礦機們能夠貢獻各自的算力一起挖礦以創建區塊,獲得區塊獎勵,並根據算力貢獻比例分配利潤(即礦機接入礦池—提供算力—獲得收益)。
17、公有鏈
完全開放的區塊鏈,是指任何人都可讀取的、任何人都能發送交易且交易能獲得有效確認的、全世界的人都可以參與系統維護工作,任何人都可以通過交易或挖礦讀取和寫入數據。
18、私有鏈
寫入許可權僅面向某個組織或者特定少數對象的區塊鏈。讀取許可權可以對外開放,或者進行任意程度地限制。
19、聯盟鏈
共識機制由指定若干機構共同控制的區塊鏈。
20、側鏈
楔入式側鏈技術(pegged sidechains),它將實現比特幣和其他數字資產在多個區塊鏈間的轉移,這就意味著用戶們在使用他們已有資產的情況下,就可以訪問新的加密貨幣系統。
21、跨鏈技術
跨鏈技術可以理解為連接各區塊鏈的橋梁,其主要應用是實現各區塊鏈之間的Atom交易、資產轉換、區塊鏈內部信息互通,或解決Oracle的問題等。
22、硬分叉
區塊鏈發生永久性分歧,在新共識規則發布後,部分沒有升級的節點無法驗證已經升級的節點生產的區塊,通常硬分叉就會發生。
23、軟分叉
當新共識規則發布後,沒有升級的節點會因為不知道新共識規則下,而生產不合法的區塊,就會產生臨時性分叉。
24、Hash——哈希值
一般翻譯做」散列」,也有直接音譯為」哈希」的。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
25、主鏈
主鏈一詞源於主網(,相對於測試網),即正式上線的、獨立的區塊鏈網路。
對幣圈「行話」還不了解的小夥伴,趕快來學習一下:
1、法幣是什麼?
法幣是法定貨幣,是由國家和政府發行的,只有政府信用來做擔保,如人民幣、美元等等。
2、token是什麼?
token,通常翻譯成通證。Token是區塊鏈中的重要概念之一,它更廣為人知的名字是「代幣」,但在專業的「鏈圈」人看來,它更准確的翻譯是「通證」,代表的是區塊鏈上的一種權益證明,而非貨幣。
Token的三個要素
一是數字權益證明,通證必須是以數字形式存在的權益憑證,代表一種權利、一種固有和內在的價值;
二是加密貨幣,通證的真實性、防篡改性、保護隱私等能力由加密貨幣學予以保障;
三是能夠在一個網路中流動,從而隨時隨地可以驗證。
3、建倉是什麼?
幣圈建倉也叫開倉,是指交易者新買入或新賣出一定數量的數字貨幣。
4、梭哈是什麼?
幣圈梭哈就是指把本金全部投入。
5、空投是什麼?
空投是目前一種十分流行的加密貨幣營銷方式。為了讓潛在投資者和熱衷加密貨幣的人獲得代幣相關信息,代幣團隊會經常性地進行空投。
6、鎖倉是什麼?
鎖倉一般是指投資者在買賣合約後,當市場出現與自己操作相反的走勢時,開立與原先持倉相反的新倉,又稱對鎖、鎖單,甚至美其名曰蝴蝶雙飛。
7、糖果是什麼?
幣圈糖果即各種數字貨幣剛發行處在ICO時免費發放給用戶的數字幣,是虛擬幣項目發行方對項目本身的一種造勢和宣傳。
8、破發是什麼?
破指的是跌破,發指的是數字貨幣的發行價格。幣圈破發是指某種數字貨幣跌破了發行的價格。
9、私募是什麼?
幣圈私募是一種投資加密貨幣項目的方式,也是加密貨幣項目創始人為平台運作募集資金的最好方式。
10、K線圖怎麼看?
K線圖(Candlestick Charts)又稱蠟燭圖、日本線、陰陽線、棒線、紅黑線等,常用說法是「K線」。它是以每個分析周期的開盤價、最高價、最低價和收盤價繪制而成。
11、對沖是什麼?
一般對沖是同時進行兩筆行情相關、方向相反、數量相當、盈虧相抵的交易。在期貨合約市場,買入相同數量方向不同的頭寸,當方向確定後,平倉掉反方向頭寸,保留正方向獲取盈利。
12、頭寸是什麼?
頭寸是一種市場約定,承諾買賣合約的最初部位,買進合約者是多頭,處於盼漲部位;賣出合約為空頭,處於盼跌部位。
13、利好是什麼?
利好:指幣種獲得主流媒體關注,或者某項技術應用有突破性進展,有利於刺激價格上漲的消息,都稱為利好。
14、利空是什麼?
利空:促使幣價下跌的消息,如比特幣技術問題,央行打壓等。
15、反彈是什麼?
幣價在下跌趨勢中因下跌過快而回升的價格調整現象。回升幅度小於下跌幅度。
16、杠桿是什麼?
杠桿交易,顧名思義,就是利用小額的資金來進行數倍於原始金額的投資,以期望獲取相對投資標的物波動的數倍收益率,抑或虧損。
6. 以太坊web3.sendRawTransaction離線簽名交易
工作中需要復現短地址攻擊和the重入攻擊,重入攻擊可以直接通過eth.sendTransaction和remix來發送交易,但是短地址攻擊由於錢包和remix這些都對input做了長度檢測,無法通過這些方式來復現,只能通過發離線簽名交易來實現。
1.環境依賴:nodejs , keythereum , ethereumjs-common , ethereumjs-tx 。
2.進入Node控制台,獲取相應賬戶私鑰。
3.簽名交易,進入Node,這里注意nonce問題,需要Nonce是實際可執行的nonce,Nonce不對會發送交易失敗,關於如何獲取input data網路比較多就不詳述了。
4.遇到的坑,網路出來的步驟是有問題的或者過時了,當時是參考的這篇文章, https://www.freebuf.com/articles/blockchain-articles/199903.html
,在控制台通過eth.sendRawTransaction發送簽名好的交易,我遇到了這個錯誤 ** sendRawTransaction invalid sender **
7. 全球第二大加密貨幣的以太幣升至紀錄高點,這釋放出什麼信號
相較於比特幣的威名遠揚,盡管以太幣的幣值較年初而言漲幅更加恐怖,但其名氣以及市場規模還是次於比特幣。比特幣開發團隊主管Peter Szilagyi將以太幣網路節點數據搬至谷歌地球上,清晰明了地告訴各位以太幣在未來將如何統治數字貨幣世界。
自出生以來兩年時間,以太幣以迅雷不及掩耳之勢迅速攻佔了全球的富裕國家或地區。
倘若將全球例如歐洲和北美一類較為富裕的地區同亞洲以及南美這些較為貧窮的地區進行比對,”Szilagyi在接受CNBC采訪的郵件中寫到:“你會發現,活躍節點的密度同該地區的交通便利程度、工業化水平以及富裕程度相掛鉤。就我看來,此種相關性是因為完全運作以太坊需要相較為集中的資源。”
8. web3.js如何新建以太坊賬戶
推薦提問的同學去看看這個完整的區塊鏈新手入門的以太坊DApp開發教程,包括node.js、web3.js、solidity、geth、turffle都會涉及到,應該有幫助:
以太坊DApp入門實戰教程
9. 目前國內有哪些區塊鏈技術應用開發平台
所謂區塊鏈技術,簡稱BT(Blockchain technology),也被稱之為分布式賬本技術,是一種互聯網資料庫技術,其特點是去中心化、公開透明,讓每個人均可參與資料庫記錄。