区块链是一个去中心化计算协议,约定了不同的利益主体如何分散的创建和维护一个分布式的计算基础设施,从而实现“基础设施管理权”与“用户数据控制权”之间的分离,防止单一平台通过计算基础设施管理权力,实现对用户数据、用户资产和用户身份的控制。区块链还是一个透明可信的权利确认与追溯系统,一份权利一旦数字化为区块链上的通证,可以得到可靠的确权,并且可全程追踪其流转、交易、转换、变形的全过程。区块链是协议创造和自动执行平台。智能合约是这一能力的集中体现。通过智能合约,权利与价值的分配协议可以无需借助可信第三方,即得到高效、准确、可信的执行,并且全过程可审计。
跟单这块具体有哪些功能呢?
1.交易员:这是核心所在了,平台可以入住交易员,并且可以为交易员提供推荐机制,他邀请进来的用户则分成更多。
2.推荐制度:可以按照项目的具体情况来设计推荐制度加入平台。
3.交易所选择:可以通过api系统对接多个交易所,让用户自主选择交易员或者平台进行跟单;当然如果项目有有计划建交易所把资源掌握在手上,也是可以的。
4.其他功能:可以加入许多比如行情一览、注册参数设置、分红机制、也可以加入其他玩法游戏、社交等。
pragma solidity ^0.4.16;
//接口定义
interface tokenRecipient{
function receiveApproval(address _from,uint256 _value,address _token,bytes _extraData) external;
}
contract TokenERC20{
string public name;//代币的名字
string public symbol;//代币的符号,也就是代币的简称
uint8 public decimals = 18;//支持几位小数点后几位
uint256 public totalSupply;//发行代币的总量,所有智能合约发行的代币总量是一定的
mapping(address => uint256) public balanceOf;//输入地址,可以获取该地址代币的余额
mapping(address => mapping(address => uint256)) public allowance;//准许,允许别人以你的名义给别人转
//事件
event Transfer(address indexed from,address indexed to,uint256 value);
event Approval(address indexed _owner,address indexed _spender,uint256 _value);
event Burn(address indexed from,uint256 value);
//构造函数
function constructor(uint256 initialSupply,string tokenName,string tokenSymbol) public {
totalSupply = initialSupply * 10 ** uint256(decimals);
balanceOf[msg.sender] = totalSupply;
name = tokenName;
symbol = tokenSymbol;
}
//转账,内部调用
function _transfer(address _from,address _to,uint _value)internal{
//禁止往0地址转账
require(_to != 0x0);
require(balanceOf[_from]>=_value);
//防止溢出
require(balanceOf[_to]+_value >= balanceOf[_to]);
//保证原子性
uint previousBalances = balanceOf[_from] + balanceOf[_to];
balanceOf[_from]-=_value;
balanceOf[_to]+=_value;
emit Transfer(_from,_to,_value);
//assert要求一定为真
assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
}
function transfer(address _to,uint256 _value) public returns(bool success){
_transfer(msg.sender,_to,_value);
return true;
}
//从别人账户转到另一个人账户
function transferFrom(address _from,address _to,uint256 _value) public returns(bool success){
//allowance[_from][msg.sender]:from账户给合约调用者的账户的额度
require(_value <= allowance[_from][msg.sender]);
allowance[_from][msg.sender]-=_value;
_transfer(_from,_to,_value);
return true;
}
//授权
function approve(address _spender,uint256 _value) public returns(bool success){
//合约调用者给spender的授权额度
allowance[msg.sender][_spender] = _value;
emit Approval(msg.sender,_spender,_value);
return true;
}
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;
}
}
function burn(uint256 _value) public returns(bool success){
require(balanceOf[msg.sender] >= _value);
//调用者账户减掉_value
balanceOf[msg.sender] -= _value;
//代币总量减掉_value
totalSupply -= _value;
emit Burn(msg.sender,_value);
return true;
}
//在授权额度内销毁别人的代币
function burnFrom(address _from,uint256 _value) public returns(bool success){
require(balanceOf[_from] >= _value);
require(_value <= allowance[_from][msg.sender]);
balanceOf[_from] -= _value;
allowance[_from][msg.sender] -= _value;
totalSupply-=_value;
emit Burn(_from,_value);
return true;
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。