智能合約

pragma solidity ^0.4.20;

contract ERC20 {

? ?//獲取總的發(fā)行量

? ? function totalSupply() constant returns (uint totalSupply);

? ? //查詢賬戶余額

? ? function balanceOf(address _owner) constant returns (uint balance);

? ? // 發(fā)送Token到某個地址(轉(zhuǎn)賬)

? ? function transfer(address _to, uint _value)returns(bool success);

? ? //從地址from 發(fā)送token到to地址

? ? function transferFrom(address _from, address _to, uint _value) returns (bool success);

? ? //允許_spender從你的賬戶轉(zhuǎn)出token

? ? function approve(address _spender, uint _value)returns(bool success);

? ? //查詢允許spender轉(zhuǎn)移的Token數(shù)量

? ? function allowance(address _owner, address _spender) constant returns (uint remaining);

? ? //transfer方法調(diào)用時的通知事件

? ? event Transfer(address indexed _from, address indexed _to, uint _value);

? ? //approve方法調(diào)用時的通知事件

? ? event Approval(address indexed _owner, address indexed _spender, uint _value);

}

contract PixCoin is ERC20 {

//代幣名稱

? ? string public constant name="PixCoin";

? ? //別名

? ? string public constant symbol="PIX";

? ? //允許后面出現(xiàn)的 小數(shù)點

? ? uint public constant decimals=0;

? ? //存放指定的地址存放的token 數(shù)量

? ? mapping(address=>uint) _blanceOf;

? ? //用來存放指定的地址從指定的賬戶可以轉(zhuǎn)出的token

? ? mapping(address=>mapping(address=>uint)) _approve;

? ? //基金會組織

? ? address foundation;

? ? function PixCoin(address _foundation) public{

? ? ? ? ? foundation = _foundation;

? ? ? ? ? _blanceOf[foundation]=200000000;

? ? }

? ? ? //設(shè)置要發(fā)幣的總數(shù)額

? ? function totalSupply() constant returns (uint totalSupply){

? ? ? ? ? ? totalSupply=1000000000;

? ? }

? ? //返回指定的代幣token 數(shù)量

? ? function balanceOf(address _owner) constant returns (uint balance){

? ? ? ? ? ? balance=_blanceOf[_owner];

? ? }

? ? ? //向指定的地址轉(zhuǎn)_value;

? ? function transfer(address _to, uint _value) returns (bool success){

? ? ? ? ? ? require(_blanceOf[msg.sender]>_value);

? ? ? ? ? ? _blanceOf[msg.sender] -= _value;

? ? ? ? ? ? _blanceOf[_to] += _value;

? ? ? ? ? ? success=true;

? ? }

? ? //從指定的地址向指定的賬戶轉(zhuǎn) _value;

? ? function transferFrom(address _from, address _to, uint _value) returns (bool success){

? ? ? ? ? require(_blanceOf[_from]>_value);

? ? ? ? ? _approve[_from][_to] -= _value;

? ? ? ? ? _blanceOf[_from] -= _value;

? ? ? ? ? _blanceOf[_to] += _value;

? ? ? ? ? success=true;

? ? }

? ? //設(shè)置_spender 可以從當前地址 msg.sender 轉(zhuǎn)賬的余額.

? ? function approve(address _spender, uint _value) returns (bool success){

? ? ? ? ? ? //指定spender 可以從當前賬戶轉(zhuǎn)的余額

? ? ? ? ? ? _approve[msg.sender][_spender] = _value;

? ? ? ? ? ? success=true;

? ? }

? ? ? //設(shè)置當前賬戶

? ? function allowance(address _owner, address _spender) constant returns (uint remaining){

? ? ? ? ? ? remaining=_approve[_owner][_spender];

? ? }

}

contract ERC721 {

? ? // 返回所有非同質(zhì)代幣的數(shù)量

? ? function totalSupply() public view returns (uint256 total);

? ? // 返回_owner的非同質(zhì)代幣的數(shù)量

? ? function balanceOf(address _owner) public view returns (uint256 balance);

? ? // 返回_tokenId非同質(zhì)代幣的擁有者的地址

? ? function ownerOf(uint256 _tokenId) external view returns (address owner);

? ? // 將_tokenId非同質(zhì)代幣授權(quán)給地址_to的擁有者

? ? // approve()方法的目的是可以授權(quán)第三人來代替自己執(zhí)行交易

? ? function approve(address _to, uint256 _tokenId) external;

? ? // 將_tokenId非同質(zhì)代幣轉(zhuǎn)移給地址為_to的擁有者

? ? function transfer(address _to, uint256 _tokenId) external;

? ? // 從_from擁有者轉(zhuǎn)移_tokenId非同質(zhì)代幣給_to新的擁有者

? ? // 內(nèi)部調(diào)用transfer方法進行轉(zhuǎn)移

? ? function transferFrom(address _from, address _to, uint256 _tokenId) external;

? ? // Events

? ? // 兩個事件來分別記錄轉(zhuǎn)移和授權(quán)

? ? event Transfer(address from, address to, uint256 tokenId);

? ? event Approval(address owner, address approved, uint256 tokenId);

}



? ? Asset[] assets;

? ? mapping(address => uint) _balanceOf;

? ? mapping(uint => address) _approve;

? ? mapping(uint => address) _ownerOf;

? ? address auction;


? ? function setAuction(address _auction) public onlyOwner {

? ? ? ? auction = _auction;

? ? }

? ? function supportsInterface(bytes4 _interfaceID) external view returns (bool) {

? ? ? ? return ((_interfaceID == InterfaceSignature_ERC165) || (_interfaceID == ????????InterfaceSignature_ERC721));

? ? }


? ? function balanceOf(address _owner) public view returns (uint256) {

? ? ? ? return _balanceOf[_owner];

? ? }


? ? function transfer( address _to, uint256 _tokenId ) external? {

? ? ? ? require(_tokenId < totalSupply());

? ? ? ? require(msg.sender == _ownerOf[_tokenId]);


? ? ? ? _balanceOf[msg.sender] --;

? ? ? ? _ownerOf[_tokenId] = _to;

? ? ? ? delete _approve[_tokenId];

? ? ? ? _balanceOf[_to] ++;

? ? }


? ? function approve(address _to, uint256 _tokenId) external? {

? ? ? ? _approve[_tokenId] = _to;

? ? }


? ? function transferFrom( address _from, address _to, uint256 _tokenId ) external? {

? ? ? ? require(_approve[_tokenId] == _to);

? ? ? ? require(_ownerOf[_tokenId] == _from);

? ? ? ? require(_tokenId < totalSupply());


? ? ? ? _balanceOf[_from] --;

? ? ? ? _ownerOf[_tokenId] = _to;

? ? ? ? delete _approve[_tokenId];

? ? ? ? _balanceOf[_to] ++;

? ? }


? ? function totalSupply() public view returns (uint) {

? ? ? ? return assets.length;

? ? }

? ? function ownerOf(uint256 _tokenId) external view returns (address owner) {

? ? ? ? owner = _ownerOf[_tokenId];

? ? ? ? asset(owner != address(0));

? ? }

? ? function tokensOfOwner(address _owner) external view returns(uint256[] ownerTokens) {

? ? ? ? uint256 tokenCount = balanceOf(_owner);

? ? ? ? if (tokenCount == 0) {

? ? ? ? ? ? return new uint256[](0);

? ? ? ? }

? ? ? ? uint256[] memory result = new uint256[](tokenCount);

? ? ? ? uint256 totalCount = totalSupply();

? ? ? ? uint256 resultIndex = 0;

? ? ? ? uint256 idx;

? ? ? ? for (idx = 0; idx < totalCount; idx++) {

? ? ? ? ? ? if (_ownerOf[idx] == _owner) {

? ? ? ? ? ? ? ? result[resultIndex] = idx;

? ? ? ? ? ? ? ? resultIndex++;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return result;

? ? }

? ? // 創(chuàng)建新資產(chǎn)

? ? /*

? ? struct Asset {

? ? ? ? uint contenthash;

? ? ? ? uint weight;

? ? ? ? address owner;

? ? ? ? string metadata;

? ? }

? ? Asset[] assets;

? ? mapping(address => uint) _balanceOf;

? ? mapping(uint => address) _approve;

? ? mapping(uint => address) _ownerOf;

? ? */

? ? function _newToken(uint contenthash, uint weight, string metadata, address owner, uint price) private returns (uint) {

? ? ? ? Asset memory asset = Asset(contenthash, weight, owner, metadata, price);

? ? ? ? _balanceOf[owner] ++;

? ? ? ? uint id = assets.push(asset) - 1;

? ? ? ? _ownerOf[id] = owner;

? ? ? ? return id;

? ? }


? ? function newToken(uint contenthash, string metadata) public returns(uint) {

? ? ? ? return _newToken(contenthash, 100, metadata, msg.sender, 0);

? ? }

? ? // 分割資產(chǎn)

? ? function split(uint id, uint weight) public returns(bool) {

? ? ? ? Asset asset = assets[id];

? ? ? ? address owner = _ownerOf[id];

? ? ? ? uint price = asset.price * weight / asset.weight;

? ? ? ? _newToken(asset.contenthash, weight, asset.metadata, owner, price);

? ? ? ? asset.weight -= weight;

? ? ? ? asset.price -= price;

? ? }

? ? // 放入拍賣場

? ? function sell(uint id, uint price) public returns(bool) {

? ? }

}

contract CRMAuction is ICRMAuction {

? ? struct Auction {

? ? ? ? address seller;

? ? ? ? uint startingPrice;

? ? ? ? uint endingPrice;

? ? ? ? bool isEnd;

? ? }

? ? mapping (uint => Auction) autions;

? ? CRMERC20 crmERC20;

? ? CRMERC721 crmERC721;

? ? function CRMAuction(address _crmERC20, address _crmERC721) public {

? ? ? ? crmERC20 = CRMERC20(_crmERC20);

? ? ? ? crmERC721 = CRMERC721(_crmERC721);

? ? }

}

// 啟動和管理合約

contract CRM is Ownable {

? ? CRMERC20 public crmERC20;

? ? CRMERC721 public crmERC721;

? ? CRMAuction public crmAuction; // 拍賣場

? ? function CRM() public {

? ? ? ? crmERC20 = new CRMERC20();

? ? ? ? crmERC721 = new CRMERC721();

? ? ? ? crmAuction = new CRMAuction(crmERC20, crmERC721);

? ? ? ? crmERC721.setAuction(crmAuction);

? ? }

? ? // 每天對作品評獎

? ? function dispathBonus() public onlyOwner {


? ? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末年缎,一起剝皮案震驚了整個濱河市纽疟,隨后出現(xiàn)的幾起案子对供,更是在濱河造成了極大的恐慌蓖扑,老刑警劉巖聂使,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丢早,居然都是意外死亡板鬓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門覆履,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹋盆,“玉大人,你說我怎么就攤上這事硝全∑芪恚” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵伟众,是天一觀的道長析藕。 經(jīng)常有香客問我,道長凳厢,這世上最難降的妖魔是什么账胧? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮先紫,結(jié)果婚禮上治泥,老公的妹妹穿的比我還像新娘。我一直安慰自己遮精,他們只是感情好居夹,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仑鸥,像睡著了一般吮播。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上眼俊,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天意狠,我揣著相機與錄音,去河邊找鬼疮胖。 笑死环戈,一個胖子當著我的面吹牛闷板,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播院塞,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼遮晚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拦止?” 一聲冷哼從身側(cè)響起县遣,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汹族,沒想到半個月后萧求,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡顶瞒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年夸政,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榴徐。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡守问,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坑资,到底是詐尸還是另有隱情耗帕,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布盐茎,位于F島的核電站兴垦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏字柠。R本人自食惡果不足惜探越,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窑业。 院中可真熱鬧钦幔,春花似錦、人聲如沸常柄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽西潘。三九已至卷玉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喷市,已是汗流浹背相种。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留品姓,地道東北人寝并。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓箫措,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衬潦。 傳聞我的和親對象是個殘疾皇子斤蔓,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容