【新年企劃】人生第一顆發財幣 | 智能合約開發計劃 #2

閱讀時間約 11 分鐘

前言

這是新年特別企劃的第二篇,所以如果你還沒看過前一篇的話,連結在這裡
我們的目標是在過年前學習寫自己的第一個智能合約並發行自己的加密貨幣,可以作為紅包發送給親友,或是想想自己幣的用途。
這篇文章會開始寫一些程式,我會盡量嘗試解釋程式碼,但是如果看不懂真的放棄的話,可以直接將我的程式碼複製起來貼到Remix裡面,除了程式碼外,我們也會練習如何在Remix上編譯並進行智能合約的發佈哦!
就不囉嗦了,直接打開上次介紹的Remix開始開發吧!網址是https://remix.ethereum.org/,至於瀏覽器的部分,需要使用有安裝Metamask錢包擴充套件的瀏覽器,如果你的Metamask安裝在Chrome上的話就用Chrome開發吧,因為後續當我們要將智能合約發至測試網時,就需要它裡面的測試幣來支付鏈上手續費。

啟航

第一次打開,它或許會跳出小視窗顯示”Help us to improve Remix”,就看你要不要同意了,意思是當程式發生一些例外狀況時,會將當下這個狀況回報給以太坊基金會的開發者,幫助他們發現問題進而優化系統。
就像使用一般檔案總管那樣,我們先點開contracts的資料夾,並點選上方折一角的紙張icon,在contracts資料夾中建立一個新的.sol檔,例如abcd.sol、FaTsaiB.sol(發財幣??),.sol就是solidity程式語言的副檔名。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
最開始我們需要給一個”SPDX”許可標示符號,這個符號的意思就是這個程式碼要不要開源授權給他人使用,開源的程度就與不同的許可有關係,”// SPDX-License-Identifier: MIT”代表MIT開源許可;”// SPDX-License-Identifier: unlicensing”代表不開源,想要使用其他不同許可可以去SPDX看看詳細內容。
pragma solidity 就是指定solidity的版本,在這篇文章中我們會使用當下最新的Solidity 0.8.11版本,由於Solidity仍是一個非常新更新非常頻繁的程式語言,若未來當你看到這篇文章,已經有更新版本的Solidity,而你執行發現程式碼有點問題,不妨試著將版本降回0.8.11再執行看看。

第一個試作品 | 如何撰寫、編譯、發佈智能合約

我將其命名為First.sol,你也可以取個自己喜歡的名字,但是副檔名必須是.sol。
先寫一段最簡單的,然後先嘗試在本機端編譯、發佈智能合約就好,確定可以發佈,也能查詢加密貨幣的名稱、代號及總供應量就表示成功了。

First.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

contract Token {

string public name = "Fa Tsai Bee";
string public symbol = "FTB";
uint256 public decimals = 18;
uint256 public totalSupply = 1000000000000000000000000000000;
}
contract的意思就是合約,Token則是我們幫這個合約取的名字,要注意智能合約的名稱與未來我們要發的加密貨幣的名稱沒有關係哦!
在這個合約中我們定義了四個參數,分別是加密貨幣的名稱(name)、加密貨幣的代號(symbol)、加密貨幣可被分割的最小小數點(decimals)以及總供應量(totalSupply)。
名稱(name)跟代號(symbol)很直覺應該不用多說,以比特幣為例就是”Bitcoin”與”BTC”;以雪崩為例就是”Avalanche”與”AVAX”。
decimals指的是最小位數的小數點,以太幣當初被設計時的最小單位就是18,意思是以太幣可以被分割為0.000000000000000001顆,而這個最小單位就是我們在鏈上操作時常常在Gas Price上面看到的wei,一直看到的Gwei,G是Giga,就是10的9次方,所以假設Gas Price是100Gwei,等於100,000,000,000 wei,等於100Nano顆ETH,等於0.0000001顆ETH。(希望我的0放的數量都是對的,弄到眼花了)
totalSupply則是指總供給量,但是由於我們前面設定的最小單位是小數點後18位數,這邊的總供給量就要把18位補滿哦,假設我的總發行量要是100顆的話,totalSupply就必須是100乘上10的18次方,而在本例中總發行量設為一兆顆,所以是10的12次方程式10的18次方,總共30個0。
我們的第一個智能合約 First.sol 就這麼簡單四個參數設一設而已,因為更重要的是要先嘗試如何將智能合約編譯與發佈,這是兩個動作不要搞混了。

智能合約編譯

程式寫完以後,我們要先做編譯,點選最左側由上往下數的第三個icon,點了之後原本在右側的檔案總管就會變成”SOLIDITY COMPILER”:
最上面的COMPILER要對應到我們寫的solidity版本,就是0.8.11+commit….. 接著下面的參數應該不用動即可,往下滑看到一個Compile First.sol 的藍色按紐就點下去,如果程式沒有出現甚麼紅紅橘橘的錯誤,那就是編譯成功了,接著我們要來發佈這個編譯好的檔案。


智能合約發佈

編譯完成後,點選最左側由上往下數的第四個icon,點了之後原本在右側的”SOLIDITY COMPILER”就會變成”DEPLOY & RUN TRANSACTIONS”:
這裡的ENVIRONMENT指的是環境,由於我們單純只是要先在本機跑,選擇JavaScript VM就好,London或Berlin都可以。
ACCOUNT點開可以看到裡面有十個0x開頭的錢包地址,每個地址都有100ETH,但是很可惜那是玩具鈔,不是你發財了。
那些GAS與VALUE的設定都不用動,直接跳到CONTRACT的部分,下拉選單選擇剛剛編譯好的Token – contracts/First.sol,下面有個橘色的Deploy按鈕按下去就發佈成功了。
在程式碼區塊最底下有一筆鏈上紀錄,這一筆紀錄是在說我們的地址發佈了一個智能合約,而智能合約本身就是這個代幣哦!
左側”DEPLOY & RUN TRANSACTIONS”區塊往下滑,會看到Deployed Contracts,就是剛剛已經發佈的合約,點開可以看到四個藍色按紐,都去點點看,這個合約就能夠顯示我們剛剛定義的四個參數了。
做到這裡,我們就成功發佈了第一個智能合約了。
所以總結一下,需要做的三個步驟:
1. 先寫好程式碼。
2. 切換到 “SOLIDITY COMPILER” 進行程式碼的編譯。
3. 切換到 “DEPLOY & RUN TRANSACTIONS” 發佈自己的智能合約。
完成後,總供應量(totalSupply)個幣會直接送入發佈這個智能合約的地址中。
如果成功了,我們就把原本的程式碼稍微做些改良。

第二個試作品 | 改良版智能合約

加密貨幣初始參數客製化

之前是直接把代幣的名稱、小數位數、總發行量等資訊直接寫在程式碼中,但是這樣在程式編譯之後就不能改動了,所以如果要發許多不同的幣,就要重新更改程式碼、重新編譯再發佈合約太麻煩了。
這裡我們繼續使用 First.sol 來做修改,要做的就是把四個參數的值去掉,改成發佈合約之前才要填參數,這樣就只需要編譯一次,程式碼也不用再改來改去了,新版本看起來會像這樣:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

contract Token {

string public name;
string public symbol;
uint256 public decimals;
uint256 public totalSupply;

constructor(string memory _name, string memory _symbol, uint _decimals, uint _totalSupply){
name = _name;
symbol = _symbol;
decimals = _decimals;
totalSupply = _totalSupply;
balanceOf[msg.sender] = totalSupply;
}
}
這裡所謂的constructor,與一般function的差別是在初次部屬智能合約時,會先執行的地方,而且只能被執行一次,所以在我的理解中,constructor是一種設定程式初始參數的概念。
以此例而言在部屬前要先自行輸入 _name, _symbol, _decimals, _totalSupply 四個參數,部屬當下智能合約就會將這四個參數分別寫入name, symbol, decimals, totalSupply當中。
將原本的程式碼改為這樣以後一樣切換到 “SOLIDITY COMPILER”重新編譯,編譯後回到 “DEPLOY & RUN TRANSACTIONS”,這時候要發佈前Deploy的右邊會多出一個框框,框框的再右邊有一個往下的箭頭,箭頭點開就會發現剛剛在constructor中定義的四個參數,在發佈智能合約前需要輸入才能發佈成功,否則程式執行時不知道_name, _symbol, _decimals, _totalSupply分別是什麼就會出錯了。
這裡的參數可以填跟第一個試作品一樣的內容,例如:
_NAME: “Fa Tsai Bee”
_SYMBOL: “FTB”
_DECIMALS: 18
_TOTALSUPPLY: 100000000000000000000
輸入完按transact就完成部屬了,也就是說,未來我們要發其他的貨幣時,直接輸入發佈就好了,不需要再重新改程式碼與編譯。

結語

本篇文章主要是讓讀者瞭解如何利用Remix開發環境撰寫Solidity程式,以及如何編譯、發佈智能合約。在發佈之後怎麼看剛剛設定的參數都成功被執行了。
但你會發現這樣的貨幣甚麼事都做不了…好歹也要能夠轉帳吧!
所以下一次我們會聊聊要怎麼讓自己的加密貨幣能夠轉帳,敬請期待!

最後,謝謝你在百忙之中願意抽空來花時間來看我的文章,如果還喜歡這些內容的話希望能獲得你的追蹤及支持,也歡迎點此連結在其他平台找到我
下次見嚕 o((>ω< ))o~
為什麼會看到廣告
《科技隨筆 | 智能合約開發計畫》 智能合約開發計畫會深入淺出,從認識以太坊的協議開始出發,慢慢從最簡單的代幣到發行 NFT ,甚至是開發一些去中心化應用程式(Dapps),並做一些簡單的使用者介面讓任何人可以透過瀏覽器開啟 Web3.0 的大門。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
2022年的農曆新年在一月底就要登場了!說到新年或多或少一定免不了要家族團聚吃個團圓飯,又到了這個時間了,身為社畜的你想好今年要包多少紅包給家人了嗎?這次過年就逼親戚下載錢包,直接把你設計的發財幣、紅包幣、坐以待幣、大學延幣通通在過年的時候射給他們吧!
2022年的農曆新年在一月底就要登場了!說到新年或多或少一定免不了要家族團聚吃個團圓飯,又到了這個時間了,身為社畜的你想好今年要包多少紅包給家人了嗎?這次過年就逼親戚下載錢包,直接把你設計的發財幣、紅包幣、坐以待幣、大學延幣通通在過年的時候射給他們吧!
你可能也想看
Google News 追蹤
Thumbnail
前言 本篇要用 Token-2022 和 solana cli 來鑄造一個新的代幣叫做TYC。 如前篇所述,Token-2022 與 Spl Token 是不同的 Program,所以在呼叫的時候要特別註明以示明區別。 Token-2022 Program ID 地址: TokenzQdBNb
Thumbnail
为了编写智能合约,开发人员往往需要选择一种适合的编程语言,目前市场上有几种常用的智能合约编程语言,比如Solidity、Vyper、Michelson等,那么具体智能合约常用语言有哪些,让我们一起来看看吧 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续
这篇文章主要介绍了智能合约地址什么意思?智能合约安全吗?的相关资料,智能合约是表示为一段代码的合约,旨在执行一组指令。很多人不知道是智能合约地址什么意思,下面小编带大家深入的了解一下,一起来看看吧! 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣
SATS币是指"Satoshi"币,它是加密货币比特币(Bitcoin)的最小单位,比特币是一种去中心化的数字货币,而SATS币是比特币的分割单位,用于表示比特币的小额金额,那么SATS币未来上涨空间大吗?SATS币怎么买?下面将为大家详细介绍SATS币 🚀 币安 - 全球最大加密货币交易所
Thumbnail
合约交易是一种金融交易形式,它允许交易者进行买卖期货合约,这些合约代表了一种在未来特定日期内买卖资产的协议,通俗来说就是投资者只需要判断未来币种价格,不需要持有加密货币即可盈利,因此懂得币圈合约交易怎么玩?下面小编为大家详细说说新手如何玩合约交易 🚀 币安 - 全球最大加密货币交易所 💥 独
,發揮創意「Token Extension Standard | 代幣擴充標準」這個主題,聚焦於 Solana 區塊鏈上代幣功能的擴展與創新。這是一個極具潛力的領域,有許多值得深入探討的方向。潛在的寫作方向以下是一些你可以深入探討的方向,希望能激發你的寫作靈感: 1. NFT 的多樣化應用與標
Thumbnail
之前討論過基於Ordinals協議的BRC-20,意旨將比特幣最小單位的SATS聰(以中本聰Satoshis命名)進行編號排序,使得可以在比特鏈上發行同質化代幣FT。
Thumbnail
●智能合約 : 區塊2.0的產物   智能合約(Smart Contracts)最早是在1994年由Nick Szabo提出的概念,但一直到2015年,以太坊的創辦人Vitalik Buterin推出了智能合約,並運行於以太坊上,至今以太坊仍是最多人使用的智能合約區塊鏈。   ●智能
比特幣是一種加密貨幣,具有獨特的歷史和價值。由於加密貨幣交易市場的競爭,關鍵字在關鍵位置上非常重要。
Thumbnail
比特幣是一種虛擬貨幣,具有去中心化、透明和不可篡改的特點。隨著Ordinals協議、BRC-20代幣標準等的誕生,比特幣的使用場景逐漸擴大。擴容方案和基礎建設項目的發展也為比特幣生態帶來更多可能性。本文分析了資產發行協議、擴容解決方案以及基礎建設項目對比特幣生態發展的影響。
Thumbnail
前言 本篇要用 Token-2022 和 solana cli 來鑄造一個新的代幣叫做TYC。 如前篇所述,Token-2022 與 Spl Token 是不同的 Program,所以在呼叫的時候要特別註明以示明區別。 Token-2022 Program ID 地址: TokenzQdBNb
Thumbnail
为了编写智能合约,开发人员往往需要选择一种适合的编程语言,目前市场上有几种常用的智能合约编程语言,比如Solidity、Vyper、Michelson等,那么具体智能合约常用语言有哪些,让我们一起来看看吧 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续
这篇文章主要介绍了智能合约地址什么意思?智能合约安全吗?的相关资料,智能合约是表示为一段代码的合约,旨在执行一组指令。很多人不知道是智能合约地址什么意思,下面小编带大家深入的了解一下,一起来看看吧! 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣
SATS币是指"Satoshi"币,它是加密货币比特币(Bitcoin)的最小单位,比特币是一种去中心化的数字货币,而SATS币是比特币的分割单位,用于表示比特币的小额金额,那么SATS币未来上涨空间大吗?SATS币怎么买?下面将为大家详细介绍SATS币 🚀 币安 - 全球最大加密货币交易所
Thumbnail
合约交易是一种金融交易形式,它允许交易者进行买卖期货合约,这些合约代表了一种在未来特定日期内买卖资产的协议,通俗来说就是投资者只需要判断未来币种价格,不需要持有加密货币即可盈利,因此懂得币圈合约交易怎么玩?下面小编为大家详细说说新手如何玩合约交易 🚀 币安 - 全球最大加密货币交易所 💥 独
,發揮創意「Token Extension Standard | 代幣擴充標準」這個主題,聚焦於 Solana 區塊鏈上代幣功能的擴展與創新。這是一個極具潛力的領域,有許多值得深入探討的方向。潛在的寫作方向以下是一些你可以深入探討的方向,希望能激發你的寫作靈感: 1. NFT 的多樣化應用與標
Thumbnail
之前討論過基於Ordinals協議的BRC-20,意旨將比特幣最小單位的SATS聰(以中本聰Satoshis命名)進行編號排序,使得可以在比特鏈上發行同質化代幣FT。
Thumbnail
●智能合約 : 區塊2.0的產物   智能合約(Smart Contracts)最早是在1994年由Nick Szabo提出的概念,但一直到2015年,以太坊的創辦人Vitalik Buterin推出了智能合約,並運行於以太坊上,至今以太坊仍是最多人使用的智能合約區塊鏈。   ●智能
比特幣是一種加密貨幣,具有獨特的歷史和價值。由於加密貨幣交易市場的競爭,關鍵字在關鍵位置上非常重要。
Thumbnail
比特幣是一種虛擬貨幣,具有去中心化、透明和不可篡改的特點。隨著Ordinals協議、BRC-20代幣標準等的誕生,比特幣的使用場景逐漸擴大。擴容方案和基礎建設項目的發展也為比特幣生態帶來更多可能性。本文分析了資產發行協議、擴容解決方案以及基礎建設項目對比特幣生態發展的影響。