給代幣新增高階功能 代幣管理 增發 兌換 凍結等

2022-09-15 10:09:09 字數 2603 閱讀 7219

本文主要介紹代幣高階功能的實現: 代幣管理、代幣增發、代幣兌換、資產凍結、gas自動補充。

雖然區塊鏈是去中心化的,但是實現對代幣(合約)的管理,也在許多應用中有需求,為了對代幣進行管理,首先需要給合約新增乙個管理者。

我們來看看如果實現,先建立乙個owned合約。

contract owned 

modifier onlyowner

// 實現所有權轉移

function transferownership(address newowner) onlyowner

}

這個合約重要的是加入了乙個函式修改器(function modifiers)onlyowner,函式修改器是乙個合約屬性,可以被繼承,還能被重寫。它用於在函式執行前檢查某種前置條件。

如果熟悉python的同學,會發現函式修改器的作用和python的裝飾器很相似。

然後讓代幣合約繼承owned以擁有onlyowner修改器,**如下:

contract mytoken is owned 

}

實現代幣增發,代幣增發就如同央行印鈔票一樣,想必很多人都需要這樣的功能。

給合約新增以下的方法:

function minttoken(address target, uint256 mintedamount) onlyowner
注意onlyowner修改器新增在函式末尾,這表示只有ower才能呼叫這用函式。

他的功能很簡單,就是給指定的賬戶增加代幣,同時增加總**量。

event frozenfunds(address target, bool frozen);

function freezeaccount(address target, bool freeze) onlyowner

單單以上的**還無法凍結,需要把他加入到transfer函式中才能真正生效,因此修改transfer函式

function transfer(address _to, uint256 _value)
這樣在轉賬前,對發起交易的賬號做一次檢查,只有不是被凍結的賬號才能轉賬。

可以自己的貨幣中實現代幣與其他數字貨幣(ether 或其他tokens)的兌換機制。有了這個功能,我們的合約就可以在一買一賣中賺利潤了。

先來設定下買賣**

uint256 public sellprice;

uint256 public buyprice;

function setprices(uint256 newsellprice, uint256 newbuyprice) onlyowner

setprices()新增了onlyowner修改器,注意買賣的**單位是wei(最小的貨幣單位: 1 eth = 1000000000000000000 wei)

新增來新增買賣函式:

function buy() payable returns (uint amount)

function sell(uint amount) returns (uint revenue)

加入了買賣功能後,要求我們在建立合約時傳送足夠的以太幣,以便合約有能力回購市面上的代幣,否則合約將破產,使用者沒法先合約賣代幣。

以太坊中的交易時需要gas(支付給礦工的費用,費用以ether來支付)。而如果使用者沒有以太幣,只有代幣的情況(或者我們想向使用者隱藏以太坊的細節),就需要自動補充gas的功能。這個功能將使我們代幣更加好用。

自動補充的邏輯是這樣了,在執行交易之前,我們判斷使用者的餘額(用來支付礦工的費用),如果使用者的餘額非常少(低於某個閾值時)可能影響到交易進行,合約自動售出一部分代幣來補充餘額,以幫助使用者順利完成交易。

先來設定餘額閾值:

uint minbalanceforaccounts;

function setminbalance(uint minimumbalanceinfinney) onlyowner

finney 是貨幣單位 1 finney = 0.001eth

然後交易中加入對使用者的餘額的判斷。

function transfer(address _to, uint256 _value) {

...if(msg.sender.balance < minbalanceforaccounts)

sell((minbalanceforaccounts - msg.sender.balance) / sellprice);

if(_to.balance

如果你在建立代幣的過程中遇到問題,歡迎到我的知識星球提問。

目前我們也在招募體驗師,可以點選鏈結了解。

深入淺出區塊鏈 - 系統學習區塊鏈,打造最好的區塊鏈技術部落格。

BitMax將新增12個FTX槓桿代幣交易對

根據官網公告,bitmax將於北京時間3月30日22 00 起新增12個ftx槓桿代幣usdt 交易對。詳情如下 ethbull 3倍做多eth ethbear 3倍做空eth ltcbull 3倍做多ltc ltcbear 3倍做空ltc eosbull 3倍做多eos eosbear 3倍做空e...

ERC20合約原始碼(含代幣的銷毀等功能)

erc20合約原始碼 含代幣的銷毀等功能 pragma solidity 0.4.16 owned是合約的管理者 contract owned 判斷當前合約呼叫者是否是合約的所有者 modifier onlyowner 合約的所有者指派乙個新的管理員 param newowner address 新...

給App新增快取功能 清除快取功能

1 寫成檔案,用text或plist檔案進行資料儲存 1.寫乙個工具類,用以獲取檔案的路徑 獲取documents資料夾路徑 return 資料夾路徑 nsstring getdocumentsfolderpath 獲取documents檔案路徑 param filename 檔名稱 return ...