佛萨奇2.0源码搭建/马蹄链佛萨奇现成案例

104 阅读2分钟

  区链的『智能合约』是一个容易引起争议的概念,一次Vitalik也说后悔用智能合约(smart contract)这个名字了,不如当初叫“persistent scripts”,大约是为这个概念吵累了。有人也问这玩意就一是一段程序脚本,哪里智能了?但如果这样说,大约现在命名为『智能』的东西没有一个配得上吧,智能手机大约可以叫做可以自由安装软件的手机?何况英文的smart和intelligent在中文中都翻译成『智能』,这更是容易引起误解。

  所以那次争论中,也有人建议叫做“stored procedures”,就是数据库的存储过程。如果把区链看做一个分布式数据库的话,从技术实现上来看,智能合约确实很像数据库存储过程。使用一种新的编程语言也不是更本区别,如果使用更通用的VM,可以和其他的程序使用完全一样的编程语言。另外大家常说的确定性(deterministic),实际上也是图灵机本身具备的特性,只要不引入随机机制,也很难写出不deterministic的程序。那为什么新造出个词汇呢?套用一句俗话,我们在谈论『智能合约』的时候,到底指的是什么,I88方案I928流程8024

  //Empty internal constructor,to prevent people from mistakenly deploying

  //an instance of this contract,which should be used via inheritance.

  constructor()internal{}

  function _msgSender()internal view returns(address payable){

  return msg.sender;

  }

  function _msgData()internal view returns(bytes memory){

  this;//silence state mutability warning without generating bytecode-see github.com/ethereum/so…

  return msg.data;

  }

  }

  //定义Approval事件,在发生代币授权时触发该事件

  event Approval(address indexed owner,address indexed spender,uint256 value);

  totalSupply函数

  //获取当前代币的总供应量

  function totalSupply()external view returns(uint256);

  balanceOf函数

  //获取当前账户的代币余额

  function balanceOf(address account)external view returns(uint256);

  transfer函数

  //代币转移函数,将amount数量的代币转移到to地址

  function transfer(address to,uint256 amount)external returns(bool);

  allowance函数

  //获取owner地址账号授权(approve方法进行授权)给spender地址的代币数量

  function allowance(address owner,address spender)external view returns(uint256);

  class[[eosio::contract("hello")]]hello:public contract{

  public:

  using contract::contract;

  [[eosio::action]]

  void hi(name user){

  print("Hello,",user);

  }

  };

  EOSIO_DISPATCH(hello,(hi))

  contract Context{