trx20怎樣部署智能合約
『壹』 trc20網路自定義設置
1、代幣名稱和符號:可以自定義代幣的名稱和符號,例如「ABC代幣」和「ABC」。
2、總供應量:可以設置代幣的總供應量,例如1000個。
3、小數位數:可以設置代幣的小數位數,例如設置為2,則代幣可以被分成100個單位。
4、發行者地址拆碰:可以設置代幣的發行者地址,即代幣的創建者。
5、轉賬手續費:可以設置碼派代幣轉賬時需要支付的遲御賀手續費,手續費可以是代幣本身或者波場的TRX代幣。
6、合約代碼:可以自定義代幣的合約代碼,包括代幣的轉賬、發行、銷毀等功能。
『貳』 trx轉賬需要多少能量
轉賬1個TRR代幣大概需要315能量。
轉賬TRC20代幣或交易等,都會消耗能量和帶寬。比如以轉賬TRR代幣為例:轉賬89個TRR代幣需要消耗345帶寬和28031能量,該地址沒有足夠的能量,則抵扣了3.92434TRX作為手續費。
眾所周知,波場代幣主要分為TRC10和TRC20代幣,資源主要分為三種:能量、帶寬和存儲。在波場獨特的網路中,存儲幾乎是無限的。那麼能量和帶寬是有限的,用完了就需要花TRX來租賃或者凍結獲得能量和帶寬。
RC10代幣是一種是通過TRON公鏈內置的通證。主要消耗帶寬。
TRC20代幣是在TRON區塊鏈上通過部署智能合約的方式來發行資產的一套標准,主要消耗能量和帶寬。
每個波場賬戶每天擁有1500帶寬,用完會自動慢慢恢復至1500.目前轉賬TRC10代幣一筆大概需要消耗300-400帶寬,即每個賬戶每天可以免費轉3-4筆TRC10代幣,比如TRX。如果當日轉賬次數過多,沒有足夠的帶寬來消耗,就會直接抵扣賬戶上面的TRX估為手續費。
能量是比較「珍貴」的資源了,賬戶每天沒有免費的能量,如果想要獲得能量有2種方式可以獲得:
1、凍結TRX獲得能量。TRON網路中凍結1萬TRX,可以獲得257431能量。
2、租賃。通過波場助手tronenergy.app能量平台,用1TRX可以租賃10800能量。
『叄』 imtoken怎麼添加trc20
可以直接在trc20鏈裡面添加usdt合約,可以添加trc20錢包,然後再添加usdt智能合約。
同樣的也要轉到trc20的usdt地址,但需要使用trx這個幣作為能量費,所以你需要往持有該usdt的trc20地址充入10個trx可能多了,但是保險。
比特幣,以太坊等錢包轉賬都需要支付礦工費,只不過礦工費以不同形式存在而已,另外,需要注意的是波場錢包和EOS錢包波場錢包轉賬不需要消耗礦工費。
imToken 成立於 2016 年 5月,希望為用戶打造一個去中心化的資產管理系統,將私鑰加密存儲於本地。
但需要消耗帶寬和能量EOS賬號發生轉賬等操作就會消耗CPU和NET,消耗的CPU和NET會隨著時間的推移全部退還到你的賬戶這里以轉賬ETH錢包中的USDT為例,轉賬ETH錢包中的USDT需要消耗ETH作為轉賬礦工費。
『肆』 波場發幣教程TRC20發幣教程TRX發幣教程波場代幣智能合約發幣教程
波場鏈的幣種叫TRC20代幣,部署到TRX的主網上,波場發幣教程也很簡單,一起學習下吧,波場發幣教程TRC20發幣教程TRX發幣教程波場代幣智能合約發幣教程,不會的退出閱讀模式,我幫你代發
TRC-20
TRC-20是用於TRON區塊鏈上的智能合約的技術標准,用於使用TRON虛擬機(TVM)實施代幣。
實現規則
3 個可選項
通證名稱
string public constant name = 「TRONEuropeRewardCoin」;
通證縮寫
string public constant symbol = 「TERC」;
通證精度
uint8 public constant decimals = 6;
6 個必選項
contract TRC20 {
function totalSupply() constant returns (uint theTotalSupply);
function balanceOf(address _owner) constant returns (uint balance);
function transfer(address _to, uint _value) returns (bool success);
function transferFrom(address _from, address _to, uint _value) returns (bool success);
function approve(address _spender, uint _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint remaining);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
totalSupply()
這個方法返回通證總的發行量。
balanceOf()
這個方法返回查詢賬戶的通證余額。
transfer()
這個方法用來從智能合約地址里轉賬通證到指定賬戶。
approve()
這個方法用來授權第三方(例如DAPP合約)從通證擁有者賬戶轉賬通證。
transferFrom()
這個方法可供第三方從通證擁有者賬戶轉賬通證。需要配合approve()方法使用。
allowance()
這個方法用來查詢可供第三方轉賬的查詢賬戶的通證余額。
2 個事件函數
當通證被成功轉賬後,會觸發轉賬事件。
event Transfer(address indexed _from, address indexed _to, uint256 _value)
當approval()方法被成功調用後,會觸發Approval事件。
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
合約示例
pragma solidity ^0.4.16;
interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; }
contract TokenTRC20 {
// Public variables of the token
string public name;
string public symbol;
uint8 public decimals = 18;
// 18 decimals is the strongly suggested default, avoid changing it
uint256 public totalSupply;
// This creates an array with all balances
mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;
// This generates a public event on the blockchain that will notify clients
event Transfer(address indexed from, address indexed to, uint256 value);
// This notifies clients about the amount burnt
event Burn(address indexed from, uint256 value);
/**
* Constructor function
*
* Initializes contract with initial supply tokens to the creator of the contract
*/
function TokenTRC20(
uint256 initialSupply,
string tokenName,
string tokenSymbol
) public {
totalSupply = initialSupply * 10 ** uint256(decimals); // Update total supply with the decimal amount
balanceOf[msg.sender] = totalSupply; // Give the creator all initial tokens
name = tokenName; // Set the name for display purposes
symbol = tokenSymbol; // Set the symbol for display purposes
}
/**
* Internal transfer, only can be called by this contract
*/
function _transfer(address _from, address _to, uint _value) internal {
// Prevent transfer to 0x0 address. Use burn() instead
require(_to != 0x0);
// Check if the sender has enough
require(balanceOf[_from] >= _value);
// Check for overflows
require(balanceOf[_to] + _value >= balanceOf[_to]);
// Save this for an assertion in the future
uint previousBalances = balanceOf[_from] + balanceOf[_to];
// Subtract from the sender
balanceOf[_from] -= _value;
// Add the same to the recipient
balanceOf[_to] += _value;
emit Transfer(_from, _to, _value);
// Asserts are used to use static analysis to find bugs in your code. They should never fail
assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
}
/**
* Transfer tokens
*
* Send `_value` tokens to `_to` from your account
*
* @param _to The address of the recipient
* @param _value the amount to send
*/
function transfer(address _to, uint256 _value) public {
_transfer(msg.sender, _to, _value);
}
/**
* Transfer tokens from other address
*
* Send `_value` tokens to `_to` on behalf of `_from`
*
* @param _from The address of the sender
* @param _to The address of the recipient
* @param _value the amount to send
*/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
require(_value <= allowance[_from][msg.sender]); // Check allowance
allowance[_from][msg.sender] -= _value;
_transfer(_from, _to, _value);
return true;
}
/**
* Set allowance for other address
*
* Allows `_spender` to spend no more than `_value` tokens on your behalf
*
* @param _spender The address authorized to spend
* @param _value the max amount they can spend
*/
function approve(address _spender, uint256 _value) public
returns (bool success) {
allowance[msg.sender][_spender] = _value;
return true;
}
/**
* Set allowance for other address and notify
*
* Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
*
* @param _spender The address authorized to spend
* @param _value the max amount they can spend
* @param _extraData some extra information to send to the approved contract
*/
function approveAndCall(address _spender, uint256 _value, bytes _extraData)
public
returns (bool success) {
tokenRecipient spender = tokenRecipient(_spender);
if (approve(_spender, _value)) {
spender.receiveApproval(msg.sender, _value, this, _extraData);
return true;
}
}
/**
* Destroy tokens
*
* Remove `_value` tokens from the system irreversibly
*
* @param _value the amount of money to burn
*/
function burn(uint256 _value) public returns (bool success) {
require(balanceOf[msg.sender] >= _value); // Check if the sender has enough
balanceOf[msg.sender] -= _value; // Subtract from the sender
totalSupply -= _value; // Updates totalSupply
emit Burn(msg.sender, _value);
return true;
}
/**
* Destroy tokens from other account
*
* Remove `_value` tokens from the system irreversibly on behalf of `_from`.
*
* @param _from the address of the sender
* @param _value the amount of money to burn
*/
function burnFrom(address _from, uint256 _value) public returns (bool success) {
require(balanceOf[_from] >= _value); // Check if the targeted balance is enough
require(_value <= allowance[_from][msg.sender]); // Check allowance
balanceOf[_from] -= _value; // Subtract from the targeted balance
allowance[_from][msg.sender] -= _value; // Subtract from the sender's allowance
totalSupply -= _value; // Update totalSupply
emit Burn(_from, _value);
return true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
}
Next Previous
就是這么簡單,你學會了嗎?
『伍』 TRON TRC20協議如何利用它實現智能合約