/*
This creates a public tradeable fungible token in the Ethereum Blockchain.
https://github.com/ethereum/wiki/wiki/Standardized_Contract_APIs
这是一套标准的具有固定市值的以太坊密码合约。最新代码可以forkgithub的以下标准合约APIs地址。

Unmodified this will create a cryptoasset with a fixed market cap
wholly owned by the contract creator. You can create any function
to change this contract, like allowing specific rules for the issuance,
destruction and freezing of any assets. This contract is intended for
educational purposes, you are fully responsible for compliance with
present or future regulations of finance, communications and the
universal rights of digital beings.
不需要进行修便能创建一个具有固定市值的token。其所有权由合同创造者全权拥有。您可以创建任何功能改变这个合同,比如允许发行的具体规则,破坏和冻结任何资产。本合同适用于教育目的,您完全有责任遵守目前或未来的金融,通讯和管理条例数字生存的普遍权利。

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
任何人都可以自由复制,修改,发布,使用,编译,出售或者以源代码形式或以编译形式分发此软件二进制,出于任何目的,商业或非商业,以及任何目的手段。

In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
在承认版权法的司法管辖区中,作者或作者本软件的任何和所有版权利益软件都将贡献到公共领域。我们为此付出了我们的努力。根据版权法,此贡献行为是我们自己的一种公开的行为永远放弃所有现在和将来的权利软件。

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

本软件按“原样”提供,不提供任何形式的担保,明示或暗示,包括但不限于保证
适销性,针对特定用途的适用性和不侵权。在任何情况下,作者均不对任何索赔,损害或责任负责其他责任,无论是在合同行为,侵权行为还是其他方面,来自,与本软件或使用有关的或与之相关的软件中的其他交易。

For more information, please refer to http://unlicense.org
更多信息请参考http://unlicense.org
*/
/* 定义函数我的通证LekkoToken */
contract LekkoToken {

/* 定义LekkoToken通证的变量包含 字符串定义的名称name,字符串定义的标识符symbol和8位无符号整型位decimals */
string public name;
string public symbol;
uint8 public decimals;/* 定义了一个数组,用来表征合约所有余额的balanceOf */
mapping (address => uint256) public balanceOf;/* 定义一个区块链上的一个公共事件Transfer来通知客户,其三个参数包含来源地址,去向地址和数值value */
event Transfer(address indexed from, address indexed to, uint256 value);/* 通过对函数LekkoToken设置参数如通证总量的无符号256位整数_supply,通证名称字符串_name,通证缩写字母字符串_symbol以及无符号8位整数的代币精度对整个合约进行初始化 */
function LekkoToken(uint256 _supply, string _name, string _symbol, uint8 _decimals) {/* 如果没有对通证总量_supply进行设置,则默认设定为最小的100万个通证数量,当然这里在代码里面可以进行自定义最小数量额度。 */if (_supply == 0) _supply = 1000000;/* 如果增加其他函数对这些变量进行修改的话,这些定义的通证总量,名称和标识符是不会进行变更的*/balanceOf[msg.sender] = _supply;name = _name;symbol = _symbol;/* 如果你想要对通证的精度进行更细的分割或者粗放化,你可以在这个定义中进行修改,然后添加基本单位的小数位数  */decimals = _decimals;
}/* 以下是定义转账通证的函数transfer,主要包含发送目的地地址_to和256位无符号整型_value   */
function transfer(address _to, uint256 _value) {/* 根据以太坊规则,如果发送者发送超过其本身拥有余额以上的通证到其他地址取得时候,会判定失败throw掉。另外,对于发送目的地的余额加上获得的值_value小于发送目的地的余额的情况下,也会判定失败throw掉。第二个逻辑的目的即为发送的余额不能为负数。强调下,基本上一些比较低级的安全漏洞通过这个地方进行攻击。因为有些项目想要设置特定业务的时候,往往会在发送代币的逻辑上进行定制化,这样很容易造成漏洞被攻击并转移掉balance。因此要特别小心。   */if (balanceOf[msg.sender] < _value) throw;if (balanceOf[_to] + _value < balanceOf[_to]) throw;/* 这里是基本逻辑的定义,主要是对通证转移前后,原有_value的拥有者balanceOf[msg.sender]如果发送通证成功,应该在总额上减去转移的通证数量。相应的,通证转移的接收者balanceOf[_to]应该增加相应的数额_value。从逻辑上来说,如果上述逻辑成功,是不用判定转移后balanceOf[msg.sender]小于0的情况。如果特定业务逻辑需要修改的时候,对于0的判断还是很重要的,注意任何漏洞形成的可能。 */balanceOf[msg.sender] -= _value;balanceOf[_to] += _value;/* 对任何监听此次转账的人进行通知,区块链上更多的是通知满足条件进行此项智能合约作业的矿工 */Transfer(msg.sender, _to, _value);
}

}

整个发币的合约详解到此结束。其实可以看出来任何一个核心智能合约的编写并不是很难,逻辑其实也很简单。但是处于安全性的考虑,对于任何需要定制化的智能合约来说,一定要注意,对通证进行转账定义的时候,余额进出的控制。比较有名的几次攻击,尤其是历史上第一大案DAO的攻击,都基本问题出在这个地方。有兴趣的可以看我之前对DAO详解的文章。https://blog.csdn.net/lsttoy/article/details/70156527

如果有任何心得也欢迎留言。

[区块链]详解以太坊标准发行通证Token代码(技术面看待ICO)相关推荐

  1. 区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-熊丽兵-专题视频课程...

    区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-103人已学习 课程介绍         区块链开发技术进阶-深入详解以太坊智能合约语言 solidity视频培训教程:本课程是 ...

  2. 区块链技术之以太坊ETH白皮书

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 基于中本聪区块链比特币1.0之后,天才少年Vitalik Buterin(V神)在2013年年末发布了以太坊白皮书,其实 ...

  3. V神又在操心区块链技术落地,以太坊大涨!

    V神又在操心区块链技术落地,以太坊大涨! 12月1日,以太坊联合创始人 Joseph Lubin 连发20条推特,详细阐述了区块链技术和去中心化现状.在他认为,如今的以太坊社区比以往任何时候都更加健康 ...

  4. 头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础

    头歌-信息安全技术-用Python实现自己的区块链.支持以太坊的云笔记服务器端开发.编写并测试用于保存云笔记的智能合约.支持以太坊的云笔记小程序开发基础 一.用Python实现自己的区块链 1.任务描 ...

  5. 【区块链 | ENS】以太坊(Ethereum)中的ENS已支持DNS,怎么使用DNS解析地址?

    上篇文章:[区块链 | Ens]以太坊(Ethereum)中的ENS是什么?如何购买ENS? 我们可以了解到什么是ENS,ENS该怎么购买,但它只支持.eth对应后缀域名,并不支持.com .cn . ...

  6. 基于比特币现金BCH二层网络能实现区块链2.0以太坊的智能化吗

    第0章 引言 现在市场上有不计其数的区块链项目,多如牛毛,各个项目都认为自己是最牛逼的,都声称自己能改变世界.区块链1点零,2点零,3点零,现在已经有项目喊自己是区块链5点零了.在这样下去,区块链25 ...

  7. 区块链2.0以太坊漫谈(3)

    进一步的应用: (1)储蓄钱包. 假设Alice想确保她的资金安全,但她担心丢失或者被黑客盗走私钥.她把以太币放到和Bob签订的一个合约里,如下所示,这合同是一个银行: (1)Alice单独每天最多可 ...

  8. 深度对话 | 关于区块链,关于以太坊,V 神这次又说了啥?

    在编程.经济学.密码学.分布式系统.信息论和数学的交叉点上,Vitalik Buterin将自己在这些领域的见解组合成一个真实世界中非常成功的,旨在将传统互联网去中心化的"应用程序" ...

  9. 区块链膨胀:以太坊客户如何解决存储问题

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. ​​​4,270个代币.27,358笔交易.数字小猫463,713. 以太坊最近举办了很多活动,虽然很多加密爱好者认为这 ...

最新文章

  1. 程序员求职之道(《程序员面试笔试宝典》)之面试官箴言?
  2. 中断共享(硬件角度)
  3. C/C++fflush(stdout)循环打印输出避免缓存区错误
  4. Eclipse properties.config.yml 配置文件中文编码问题。Eclipse 配置文件插件解决方案
  5. 命主属性是水什么意思_跟水有关的字女孩名字寓意她们柔美水灵-可爱点
  6. Selenium之浏览器驱动下载和配置使用
  7. Java基础之集合篇(内容超详细,带你轻松搞懂List、Set和Map的使用)
  8. GNSS说第(七)讲---自适应动态导航定位(七)---抗差估计理论介绍
  9. Python办公自动化实战 01 | Python优势与自动化思维让你的工作化繁为简
  10. schedule-调度器
  11. Android 4.1 (Jelly Bean,果冻豆)
  12. H-Chat:用户私聊群聊管理
  13. 向Android系统中添加模块及产品流程
  14. 成年后常用的资源都从哪里来的?原来是在几个网站里面搜索到的!
  15. 前端基础--JavaScript
  16. Windows7下载钉钉DingTalk直播回放视频到本地
  17. 【数据结构与算法】课程设计报告
  18. 路由器接口及连接(1)
  19. CentOS7.6 万兆网卡性能测试.
  20. 电脑开机后显示服务器没有声音,电脑没有声音了是怎么回事 如何处理电脑没有声音的问题...

热门文章

  1. 诺基亚手机同比增长近八倍,对中国手机来说那是狼来了
  2. “魂系”游戏的魅力,不止在于受苦——浅谈黑暗之魂的设计特色
  3. 闲鱼上怎么获得更多曝光量
  4. 超级狗SuperDog SDK开发套件SuperDog-R-2.5.1.107241安装使用教程
  5. java.lang.unsatisfiedlinkerror:_java.lang.UnsatisfiedLinkError 解决方法
  6. 2022年度打印机行业数据报告:十大热门品牌销量排行榜
  7. 饿了么UI的表单验证,有输入东西,但是一直无法通过验证。
  8. 阿里云南京云栖大会举行,给制造业升级下猛药
  9. 写出在桌面上显示计算机的操作步骤,怎样让便签在Windows电脑桌面屏幕上一直显示?具体操作步骤是什么...
  10. ubuntu 系统使用过程中发现桌面突然放大,屏幕跟着鼠标走