区块链–以太坊智能合约编程学习笔记


合约的科普知识

在以太坊虚拟机上,合约程序自动执行,无法被人类干预。一旦部署无法修改。每次执行合约即需要消耗GAS,所以,像C语言一样严谨是必要的。我戏称它为:业务C语言

开发

→编程的语法

  • 开头
pragma solidity ^0.50意味着所使用的编译器,0.50<=编译器版本<0.60
  • 状态变量和函数
示例-1

→可见修饰符含义

→→public与private

对于public和private,相信学过其他主流语言的人都能明白:
  • public修饰的变量和函数,任何用户或者合约都能调用和访问。
  • private修饰的变量和函数,只能在其所在的合约中调用和访问,即使是其子合约也没有权限访问。

→→external和internal

除 public 和 private 属性之外,Solidity 还使用了另外两个描述函数可见性的修饰词:internal(内部) 和 external(外部)。
  • internal 和 某些面向对象的protected关键字类似,如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的“内部”函数。
  • external 与public 类似,只不过这些函数只能在合约之外调用 – 它们不能被合约内的其他函数调用。只能修饰函数不能状态变量。

→→函数是否改变状态修饰符

  • view—可读状态变量,但不能修改
  • pure—不能改也不能读状态变量,是更加严格,而不是与view相反

→→payable修饰符

可以理解成事务,只有被其修饰,函数才有变动账户资金的权利。

→→存储位置修饰符

可以出现在变量或者函数参数前。对于值类型来说,永远是引用传递,而引用类型时,需要参考下面的修饰符来确定是否是引用传递。
  • storage:链上的持久存储的。
  • memory:EVM中的内存,可易失的。不能将memory类型赋值给局部变量(有待考证,因为引用传递下可以改变其赋值)。
示例-2
  • calldata:EVM中的内存,只读的。外部函数的参数(不含返回值),场景多为系统使用。
示例-3
示例-4
示例-5

→货币单位

示例-6

→编译器和开发框架

三种主流的:remix-ide ,solc和jssolc
  • truffle框架使用
https://www.jianshu.com/p/8794afea1996?from=timeline&isappinstalled=0https://truffle.tryblockchain.org/https://www.jianshu.com/p/eac99bb0a9bc

→技巧参考

  • 函数deposit和send的使用
https://blog.csdn.net/tianlongtc/article/details/80220142

IT技术前瞻

思索一些值得提前储备的技能。当今比较高速发展的方向不外乎是:人工智能,大数据,云计算,区块链。这些曾经的前瞻性技术已经悄然来到了我们身边了。然而,技术种类虽多但彼此推动和配合是相当密切的。本人根据生产三者的思路略分析了一下:

技术选型 生产三者
人工智能(AI),云计算 生产力
区块链 生产关系
大数据(分析/安全算法),物联网(IOT) 生产工具

事实上,未来的物流行业需要创新的价值点是生产力和生产关系,即AI和区块链。生产力是硬核,生产关系是降本增效。要想拥有竞争力就要在这两点来发力。虽然应该考虑技术变动和发展完善或成熟的因素,但行业的趋势是明显的。地灾数据的分析挖掘或多式联运一旦成立,都要求更多先进技术的支撑。即便是找外包和与互联网公司合作,都要能有更高的视野和与其它公司对话的基础。

多式联运应用区块链的十大理由

  • 物流追踪基础—货物追踪场景,并不是空间位置层面而是业务流程方面,每笔账都会记录清楚。
  • 边际成本为零—更多承运人加盟,更多交易支付环节也无成本的线性累加(成本包括线上和线下)
  • 会计前置清算—公司不收取客户垫付资金,规避了风险,实时清分结算,这是非常吸引客户的创新和特色,保证了客户资金链运转正常。
  • 多方共识制度—联盟中业务流中可以设计决定谁拥有记账,交易选举权,审查等的权利。角色合作分工,资产管理透明,管理成本降低。
  • 智能合约灵活—具体承运人与上下游承运人交接业务等管理场景。
  • 技术门槛低廉—代码和算法都开源,如果合作商已经有摸索拿来用,整合资源合兵一处。
  • 新兴技术跟随—对人工智能,物联网和大数据等维度上的新技术可以采取跟随战术。
  • 业务边缘扩展—在链上慢慢扩展和分支到相关领域链,比如保险,公益。
  • 课题建设先机—我们可以借此来申请课题,产学研一体。
  • 设币激励制度—对外合伙货运司机积分,以及对内员工的激励。在股份,期权无法刺激员工前,在链上引入币后,可以在公司激励制度设计上合理创新。