41種trx鍛煉方法
① 波場發幣教程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
就是這么簡單,你學會了嗎?
② 線性代數中,兩個矩陣相乘應該怎樣計算
矩陣乘法是根據兩個矩陣得到第三個矩陣的二元運算,第三個矩陣即前兩者的乘積,
設A是n×m的矩陣,B是m×p的矩陣,則它們的矩陣積AB是n×p的矩陣。A中每一行的m個元素都與B中對應列的m個元素對應相乘,這些乘積的和就是AB中的一個元素。
左邊矩陣的行的每一個元素與右邊矩陣的列的對應的元素一一相乘然後加到一起形成新矩陣中的aij
元素i是左邊矩陣的第i行j是右邊矩陣的第j列例如左邊矩陣:234145右邊矩陣122313相乘得到:2×1+3×2+4×12...
第一個矩陣的第一行和第二個矩陣的第一列相乘的和。得到新矩陣的第一個元素。依次類推。{3*3+(-2)*23*4+(-2)*9}
{5*3+(-4)*25*4+(-4)*9}
(2)41種trx鍛煉方法擴展閱讀
線性代數中,兩個矩陣相乘計算方法:
相乘的形式設為A*B:
1、A的行對應B的列,對應元素分別相乘。
2、相乘的結果行還是A的行、列還是B的列。
3、A的列數必須等於B的行數。