• 孤荷凌寒自学python第117天区块链031以太坊的 erc20代币01


    孤荷凌寒自学python第117天区块链031以太坊的 erc20代币01

    【主要内容】

    今天开始使用erc20标准规范按一篇网络博文的教程进行亲自敲打代码来写一个可以发行token的智能合约。学习共用时37分钟。

    (此外整理作笔记花费了约46分钟)

    详细学习过程见文末学习过程屏幕录像。

    【学习笔记】

    一、基本理清在eth网络平台上写一个可以发行代币的智能合约的基本架构

    参考的学习博文:https://www.jianshu.com/p/ce9417905b97

    首先按erc20的标准接口,定义一个底层的基础的智能合约(感觉非常 像在定义一个类的感觉 )

    erc20的标准接口一般是这样定义的:

    contract ERC20 {

          function name() constant returns (string name)

          function symbol() constant returns (string symbol)

          function decimals() constant returns (uint8 decimals)

          function totalSupply() constant returns (uint totalSupply);

          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);

        }

    参照而写的自己定义的这个底层的基础的智能合约,只使用了其中一些函数方法和事件:

    没有使用name,symbol,decimals这三个函数。

    然后另外定义一个智能合约,然后刚才的智能合约作为基础(有点类似基类的感觉 )

    最后还可以定义一个智能合约,又使用上面的智能合约作为基础(以作为教程的这篇博文为例是这样的,感觉可以多次加层)

    二、为了更好学习,手动敲打每一个代码字母,今天完成了最底层那个智能合约定义的一部分。

    代码如下:

    ```

    pragma solidity ^0.4.4;

     

    //下面定义的是最基本的合约框架,感觉直接照搬了erc20标准接口中的那些 定义

    contract Token{

        /// @return 返回此代币要发行的总量的函数方法(只是一个空壳)

        function totalSuply() constant returns (uint256 supply){}

     

        /// @param _owner 要查询的地址

        /// @return 返回对应地址的代币余额,是指eth的余额吗?

        function balanceOf(address _owner) constant returns(uint256 balance){}

     

        /// @param _to 调用此合约的节点(msg.sender)要将代币发送给哪个节点地址

        /// @param _value 此次交易要发送多少代币,是指eth吗?

        /// @return 此函数返回的是,此次交易是否完成成功。

        function transfer(address _to,uint256 _value) returns(bool success){}

     

        /// @notice 此函数用于调用此合约的节点委托授权另一个节点地址(可能是当前合约或另一个合约吗?)可以动用自己多少token

        /// @param _spender 获得调用此合约的节点(msg.sender)授权的一个节点地址。

        /// @param _value 获得了多少token的授权,指的是eth吗?

        /// @return 返回本次委托授权操作是否成功。

        function approve(address _spender,uint256 _value) returns (bool success){}

     

        /// @notice 此函数用于查询一次授权的双方(发起委托授权的节点与接受委托授权的节点)当前授权token的可用余额(就是说接受授权节点还可以动用的实际token数量)

        /// @param _owner 发起委托授权的节点地址

        /// @param _spender 授受委托授权的节点地址

        /// @return 返回剩下的可用的授权token数量

        function allowance(address _owner,address _spender) returns(uint256 remaining){}

     

       

    }

     

    ```

    三、今天学习到了solidity语言添加函数注释的方法

    对一函数的形参加以注释,以便在调用函数时,可以提示这个形参的基本信息,是非常方便 的编程技巧,solidity语言也有这样的功能,感觉 和js语言非常 类似。

    1.要对整个函数的作用进行注释

    使用

    /// @notice

    注释标签后,在后面书写注释文字

    2.要对函数的形参进行注释

    使用

    /// @param 形参名

    注释标签,在后面注明指定的形参名所代表的含义和具体内容

    3.要对返回值进行注释

    使用

    /// @return

    注释标签,在后面注明返回值的说明

    注意此处的标签是:return 而不是函数定义中的返回值的关键词returns

    【学习后记】

    有朋友在我又坚持学习了30天后,问我,哪有时间来进行学习,特别是觉得像我这个中年大叔的年纪怎么可能有时间 学习,非常感谢朋友们的关心,确实时间少得可怜,像今天 的学习,都 是在检查完孩子作业后,才挤了一个小时左右来完成 ,期间还在被不停的打扰,时间对于人生已过半的我来说,真的是宛若珠宝,再怎么珍惜,也所剩余无几了。但我深深的知道,如果不坚持学习,不改变自己,不接触最新前沿的东西,我看到人工智能正在崛起,终有一天会将我们 这样的老人逼迫得无处可逃,有了这样的紧迫感,我突然发现时间自然就出现了,可见在过去的半生里,我是白白浪费了多少时光啊!尚且年少的朋友们,命运就在自己手中。

    我从编程世界的完全门外汉走到今天,每一步是很缓慢且不断踩坑,但是这是完全自学必经的道路,那么不自学不是更好吗?我非常赞同一句话——真正的学习就是自学。

    过去20年我积累完整的自学方法论,历经实践验证,我正准备在我创建的【就是要学 终身成长】社群中与大家分享讨论这一话题,欢迎立志于终身学习,终身成长的朋友们加入社群,共同交流学习。Qq群号码:646854445

    或访问:www.941xue.com

    【关于坚持自学的例行说明】

    最后例行说明下,我为什么要坚持自学。

    “如果我不曾见过太阳,我本可以忍受黑暗,然而阳光已使我的荒凉,成为更新的荒凉。”

    ——艾米莉·狄金森

    如果要问我对自己的前半生如何看待时,我想昨天和今天的答案都将完全不同。

    昨天的我,生活在荒凉的满意之中,自觉怡然自得,拿着包身包月的工资,听着仁慈的命令,过着几乎一成不变的生活;时而与周遭的人儿和睦互往,时而唇舌相抵斤斤计较,演出着生活的鸡毛蒜皮,工作的吹拉弹唱;忘我,忘我,才能融入这平和无奇的乐章中,迈着细碎的步伐,原地踏步。那时的我觉得这就是悠然自得的听天由命的平凡人生,也就是我的宿命了。

    可是某一天,我见到了不一样的太阳以及太阳下不一样的人生光景——那并不荒凉。

    今天的我,生活在荒凉的痛苦之中,自觉渴望改变,迈着不知所措的步伐,看着流逝的年华,睁着悔恨错失一切的双眼… …

    我知道我将再无法回到过去的我,只有改变才是唯一正确的方向。

    一、为什么一把年纪还在学习

    放弃很多去聚餐,去HI歌,去游玩,去看电影,去追剧……的时间,然后进行着这个年纪似乎已不应当再进行的学习,引来身边人们无尽的不解与鄙夷甚至可怜……

    但我不想放弃终身学习的誓言。

    因为——

    我对我今天的生活现状并不认同!

    罗伯特清崎告诉过我们,反省自己当下的生活是不是自己想要的,这难道不是最好的动力与答案?

    走过了大半生,然后才发现曾经、当下所正在进行的人生并不是自己想要的,那是一种怎样的体验?

    只有心中真切的感受才能回答这个问题,而任凭再丰富的语言也是无法描绘出来的。

    经历半生的跋涉,却发现走得并不正确,有多少人有勇气承认自己过去的一切都是错误的呢?

    而我愿意告诉过去的我:“你错了!”

    那么已经历半生错误,年岁之大又压于头顶,还有希望从这架的梯子的半端重新爬下,再蹒跚着爬上另一架梯子吗?

    我宁愿相信还有希望!

    这便是我为什么要继续坚持终身学习下去的全部理由。

    二、这个年纪还在学这些技术有意义吗

    纯的技术对这把年纪其实已没有意义。

    但兴趣可以超越意义。

    但技术可以引来思想的变革,这才是意义。

    投资自己的头脑 ,改革自己的思想,这是最保值,更长远的投资,过去我从来没有投资过,错过太多,那就从投资自己头脑开始吧。

    罗伯特清崎告诉我们,真正的富有是时间的富有;真正的自由是可以决定自己愿意做什么的自由。

    因为我愿意做我兴趣所在的事,所以我希望我有自由选择的那一天,虽然今天离那一天可能还是那么遥远,但我愿意相信,每天多赶几步,离希望就更近一步。

    再者,虽然我可能再已无法完全完整的掌握这些技术了,但技术本身却可以启迪心的觉醒,激发灵感,那么只要多了解一点,我相信我将离那个正离我而去跑得越来越快的未来更近一点,不至于被未知的那个未来抛弃得太远。

    于是我怎能放弃追逐求索的步伐?

    我要坚信:感觉太迟的时候,也许还不算太迟。

    感谢一直以来关注我,鼓励我的你!

    若不嫌弃这一个到了高龄才长大的可笑可叹的我,请不吝赐教。

    我的q号是:578652607,敬候你的指点。

    【同步语音笔记】

    https://www.ximalaya.com/keji/19103006/267677825

    【学习过程屏幕录屏】

    链接:https://pan.baidu.com/s/1Z5F85KjdnS8XCeOXR0z7KA

    提取码:wz89

    欢迎大家添加我为好友: QQ: 578652607
  • 相关阅读:
    Amazon Hiring Campus 2013
    Java历史
    vue配置环境踩坑
    ES6 第十八节 模块化操作
    ES6 第十七节 class类的使用
    ES6 第十六节 promise对象的使用
    ES6 第十五节 用proxy进行预处理
    ES6 第十四节 map数据结构
    ES6 第十三节 Set和WeakSet数据结构
    ES6 第十二节 Symbol在对象中的作用
  • 原文地址:https://www.cnblogs.com/lhghroom/p/12488983.html
Copyright © 2020-2023  润新知