Contract-Development
有什麼不同?
我注意到一些智能合約在智能合約中有創建者的錢包地址,以便將代幣發送到錢包,如範例 #1:
範例 #1:
constructor() public { symbol = "0PUCKS"; name = "0 Pucks Token"; decimals = 18; _totalSupply = 100000000000000000000000000; balances[0x5A86f0cafD4ef3ba4f0344C138afcC84bd1ED222] = _totalSupply; emit Transfer(address(0), 0x5A86f0cafD4ef3ba4f0344C138afcC84bd1ED222, _totalSupply);
但是在下面的範例 #2 中,智能合約程式碼中的創建者沒有可見的錢包地址:
範例:#2
contract BTClite is StandardToken, Ownable { string public constant name = "BTC LITE"; string public constant symbol = "BTCL"; uint8 public constant decimals = 8; uint256 public constant SUPPLY_CAP = 21000000 * (10 ** uint256(decimals)); address NULL_ADDRESS = address(0);
當創建/部署範例 #2 的智能合約時,他們是否只是將代幣發送到部署並驗證合約的錢包?還是他們以另一種方式設置它?
標記只是變數上的數字。在契約 #1 中,他將變數設置
_totalSupply
為等於整數 the integer100000000000000000000000000
。然後他使數組上的整數值balances[0x5A86f0cafD4ef3ba4f0344C138afcC84bd1ED222]
等於_totalSupply
在契約 #2 中,他對變數做同樣的
SUPPLY_CAP
事情,但他並沒有創建變數來說明任何使用者擁有多少。總供應量只是一個變數,讓人們更容易知道有多少“數字”,而不是必要的,以至於您可以將供應量的價值低於您給所有者的數量。它們只是帶有值的變數。
一旦您了解令牌只是數字,而不是“真實的”,令牌就失去了它的魔力,它們不一定需要來往或來自任何地方。這一切都是合乎邏輯的。
它是可選的事情。
在第一個範例中,他們通過使用特殊的建構子給自己一個預挖。建構子創建合約的初始狀態。
在第二個例子中,如果他們願意,他們可以在建構子中做同樣的事情,但不是每個人都這樣做。