您好,登錄后才能下訂單哦!
如何通過以太坊實現ICO,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
ICO,或上線數字貨幣是新的熱潮。區塊鏈技術提供了一種獨特的方式,鼓勵早期采用者參與項目,并通過發布數字貨幣來獲得初始資金。不必害怕在這個領域使用的新術語。下面是一個關于ICO是什么的綜合指南,以及如何能夠學習更多的關于這些ICO的智能合約。
上線數字貨幣,通常被稱為ICO,是一種籌資機制,其中新項目出售其數字加密貨幣,以交換比特幣和以太幣。一個加密數字幣,或一個代幣,一般只是一個術語,表示一個項目或公司發布的價值單位。這個價值單位可以用來獎勵參與項目并執行特定行動的用戶,或者它可以作為在網絡上獲得特定服務的交易費用。例如,以太坊網絡使用以太幣(ETH)作為數字貨幣,用于在網絡中執行計算。
這些數字貨幣可以通過美元來購買,或者兌換美元等法定貨幣來獲得,也可以通過在網絡上執行特定服務(如挖礦)賺取。這些數字貨幣的優點在于它們的價格也基于對這些數字貨幣的需求而升值和貶值。這種行為類似于公司的股票,這反映了公司的部分所有權。數字貨幣既反映了在網絡中用于支付服務的貨幣,也反映了該數字貨幣網絡中的公平性。
隨著數字貨幣的網絡效應增加,其在定價中增值。確定數字貨幣是否對你的項目有意義的第一步取決于你的項目的目標是什么,并且有一種方法可以“貨幣化”。正如上面所討論的,數字貨幣不僅僅是網絡中使用的貨幣,而且是建立在網絡上的業務模型的一個單位。
如果數字貨幣對項目有意義,所討論的項目應該具有以下屬性:
網絡中的令牌應該具有實用價值。例如,以太坊平臺的數字貨幣是以太幣,它是被用作支付在區塊鏈中執行的任何計算的交易費用的貨幣。
玩家購買數字貨幣應該有經濟上的誘因,數字貨幣發行機制應該以這樣的方式設計,即隨著數字貨幣的使用,它們的價值應該增加。例如,Filecoin是用于在去中心化的硬盤網絡中存儲文件的IPFS的數字貨幣。隨著越來越多的用戶想要以分布式的方式存儲文件,他們將需要Filecoin。一般來說,這些數字貨幣預先定義貨幣供應將如何隨時間演變。這些策略是這樣設計的,其中令牌的價值隨著網絡提供的服務被更多地使用而增加。
ERC20是一個數字貨幣的標準,這使得我們很容易發布新的加密數字貨幣。它基于以太坊并描述了以太坊數字貨幣合約必須實現的功能和事件。但是在我們開始學習如何為自己的項目發放代幣之前,我們必須理解什么是“智能合約”。這是本篇文章的主題之一。
智能合約是計算機程序,允許基于預先指定的條件在各方之間自動轉移數字資產。智能合約主要用于加密數字貨幣的交互。最突出的智能合約實現是以太坊區塊鏈平臺,它也將其稱為去中心化應用程序,或DApp。
傳統上,我們習慣于集中托管應用程序。雖然應用程序的代碼可以分布在多個物理服務器上,但它們由單個實體控制。例如,facebook是一個集中式應用程序,它由一個叫做facebook公司的實體控制,而去中心化的應用程序不是由一個中心實體控制的,而是由代碼和在其中設置的協議來控制的。這些代碼通常是開源的,任何人都可以使用它們來創建一個自己的新DAPP。一些已經成功的基于以太坊的DApp是Golem, Augur和Melonport。這些DAPPS已經能夠在市場上達到數百萬美元的價值。
雖然以太坊是最流行的開發智能合約的平臺,但它不是唯一的一個。下面是一些用于編寫智能合約的其他平臺:
Script in Bitcoin,腳本處理文檔的能力有限。Bitcoin具有非圖靈完備的腳本語言,允許在指定條件下可以兌換。腳本語言是相當有限的,因為它只具有一些基本的算術、邏輯和密碼操作(例如hash和驗證數字簽名)。
Automated Transactions是另一個圖靈完備的智能合約語言,用于像Burstcoin和Qora之類的加密數字貨幣。它的一個應用例子是原子交叉鏈交易。原子交叉鏈交易使交易雙方擁有不同的數字加密貨幣,直接進行交換而不需要第三個受信任方。
NXT:NXT是一個公共的區塊鏈平臺,包含智能合約的模板選擇有限。你必須使用給定的模版,你不能編寫你自己的代碼。
Chain使用Java、Ruby和Node.js提供了帶有SDK的企業級區塊鏈基礎設施。
智能合約仍處于發展階段,不能完全取代所有形式的合約。它們對于能夠客觀定義并完全在數字領域中的術語更有效。更具體地說:
智能合約不應該對外部Web服務、API或外部數據庫進行調用。這可能導致相同智能合約代碼的多個獨立執行產生不同結果。這可能破壞區塊鏈的共識。Oracles,將現實世界中的數據更新到區塊鏈,是解決這個問題的一種方法。
智能合約只能解決事實上可以客觀決定的問題。這種約束使得智能合約對法律合約的價值較低,在沒有客觀事實的情況下靠雙方當事人的主觀判斷容易出現糾紛。
智能合約的最重要的限制是,(目前)它被用于基于if a, then b
或類似變化模式的簡單合約模型。在我國現行的法律用語中,“無不當延誤”和“超出合理懷疑”等合約中的主觀方面的考慮是很難的。
雖然這些限制目前存在,但團隊正在努力使這些智能合約更加智能化。隨著物聯網的出現,更容易傳遞實時、真實世界的數據,這些數據可以通過oracles保存在區塊鏈上。許多像Oraclize這樣的區塊鏈服務已經啟動,將真實世界的數據推到了區塊鏈鏈中。即使是簡單的if a, then b
的智能合約,也有很多情況下會被破壞。
Infura:Infura提供了可擴展的區塊鏈基礎架構,可以滿足運行完整的以太坊節點的需求,并允許開發者專注于它們的代碼。它受到開發者社區的歡迎。
Mist Browser:它是瀏覽和使用DAPPS的工具。它是一個單獨的瀏覽器,可以用來瀏覽DAPPS并與它們進行交互。
Truffle Framework:Truffle是一種流行的以太坊開發框架。它具有內置的智能合約編譯、鏈接、部署和二進制管理,極大地簡化了區塊鏈開發人員的工作。
Metamask:是一個允許人們在瀏覽器中訪問去中心化網絡的橋梁。它允許用戶在瀏覽器中運行以太坊DApp,而不需要運行完整的以太坊節點。它是一個瀏覽器插件,允許用戶通過正規網站進行以太坊交易。截至2017年9月,Metamask只能作為一個插件在Chrome瀏覽器中使用。
Remix:是一個基于Web瀏覽器的IDE,它允許用戶編寫Solidity的智能合約,然后部署和運行智能合約。
兩個主要用來寫智能合約的語言是Serpent和Solidity。Serpent是一種古老的語言,它在2017年9月就已經過時了。Solidity,它是一種基于JavaScript的語言,現在已經成為編寫智能合約的推薦語言。近年來,Serpent也發現了安全漏洞,目前這基本是一個沒有吸引力的開發平臺了。這些語言的一些關鍵特征是:
solidity:是一種面向合約的高級語言,其語法類似于JavaScript,它的設計目的是完成以太虛擬機(EVM)開發。
Serpent:是一種高級語言,用來寫合約。它與Python非常相似,但到了2017年9月,solidity是以太坊開發者的首選語言。
solidity是目前最流行的智能合約語言。有一些即將到來的智能合約語言可能在未來變得重要:
Viper:側重于安全性、語言和編譯器的簡單性。它有一個類似Python的縮進方案。
Lisk:使用JavaScript作為一種智能合約語言。
Chain:提供了企業級區塊鏈基礎設施,并采用了流行的語言,如Ruby、Java和Nodejs。
讓我們來看看一個在Solidity寫的例子。solidity是發展智能合約最流行的語言。下面的合約是一個關于如何創建新的數字貨幣的例子。新數字貨幣可以憑空挖掘出來,但只能由創建合約的用戶使用。這個合約也可以用來進行數字貨幣的轉賬即從一個地址發送到另一個地址。
pragma solidity ^0.4.0; contract Coin { address public minter; mapping (address => uint) public balances; event Sent(address from, address to, uint amount); function Coin() { minter = msg.sender; } function mint(address receiver, uint amount) { if (msg.sender != minter) return; balances[receiver] += amount; } function send(address receiver, uint amount) { if (balances[msg.sender] < amount) return; balances[msg.sender] -= amount; balances[receiver] += amount; Sent(msg.sender, receiver, amount); } }
上面的智能合約顯示了它如何被用來鑄幣并將其轉入特定的地址。我們來分析下這段代碼。
address public minter;
定義公共可訪問的地址變量。地址類型是一個160位變量,用于存儲在以太網網絡上的地址。
mapping (address => uint) public balances;
創建地址和單位類型之間的映射,存儲每個地址中的數字貨幣余額。你可以把它看作是記錄每個地址有多少數字貨幣的分類帳。
function Coin() { minter = msg.sender; }
這個函數是一個構造函數,它一旦部署就被執行。這將minter的值設置為已部署合約的地址。這確保了只能合約的所有者鑄造新的數字貨幣,而其他人不行。這可以通過以下功能來保證:
function mint(address receiver, uint amount)
只有當minter調用該函數時,才會執行該函數。該功能將數字貨幣值等于接收地址。如果它是由minter以外的人調用的,那么這個函數什么也不做。
function send(address receiver, uint amount)
這個函數從調用函數的地址向接收方的地址發送一個數字貨幣。例如,如果Bob用Alice的地址調用這個函數,并且金額是1000,那么1000個硬幣將從Bob的帳戶轉移到Alice的帳戶。
一旦編寫了一個合約,就需要通過實際部署它來測試它,并測試它是否像預期一樣運行。這就是需要testnets的原因。
testnets模擬以太坊網絡和EVM。它們使開發人員能夠在不支付gas成本的情況下上傳和與智能合約進行交互。
智能合約必須為他們的計算支付在以太網絡的gas。如果你想在以太坊網絡上運行一個智能合約,你需要支付“gas”來完成交易。然而,testnets為開發者提供了測試他們的合約而不支付任何費用的環境。testnets的gas可從許多公共區域免費提供。
Etherscan是區塊鏈的資源管理器。區塊鏈瀏覽器基本上是一種搜索引擎,允許用戶輕松查找、確認和驗證在以太坊區塊鏈上發生的交易。使用這個鏈接可以在Etherscan中驗證智能合約。
為了讓你開始使用智能合約,你可以在查看下面的模板。以太坊和solidity文檔有簡單的合約讓你開始。一旦實現了這些,就可以查看IBM提供的更高級的模板。IBM智能合約模板展示了如何使用IoT設備的輸出來控制智能合約。
關于如何通過以太坊實現ICO問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。