zl程序教程

您现在的位置是:首页 >  其他

当前栏目

泰山众筹sun4.0开发系统合约

2023-03-07 09:01:51 时间

  智能合约是存储在区块链上的程序,在满足预先确定的条件时会运行这些程序。它们通常用于自动执行协议,以便所有参与者都可以立即确定结果,而无需任何中间人参与,也不会浪费时间。它们还可以自动完成工作流程,在满足条件时触发下一个操作。

  矩阵的解析:矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。

  币确实可以无中生有地产生,但是只有创建合约的人才能做到(实现一个不同的发行计划也不难)。而且,任何人都可以给其他人转币,不需要注册用户名和密码——所需要的只是以太坊密钥对。

  //SPDX-License-Identifier:GPL-3.0

  pragma solidity^0.8.4;

  contract Coin{

  //关键字“public”让这些变量可以从外部读取

  address public minter;

  mapping(address=>uint)public balances;

  //轻客户端可以通过事件针对变化作出高效的反应

  event Sent(address from,address to,uint amount);

  //这是构造函数,只有当合约创建时运行

  constructor(){

  minter=msg.sender;

  }

  function mint(address receiver,uint amount)public{

  require(msg.sender==minter);

  balances[receiver]+=amount;

  }

  //Errors allow you to provide information about

  //why an operation failed.They are returned

  //to the caller of the function.

  error InsufficientBalance(uint requested,uint available);

  function send(address receiver,uint amount)public{

  if(amount>balances[msg.sender])

  revert InsufficientBalance({

  requested:amount,

  available:balances[msg.sender]

  });

  balances[msg.sender]-=amount;

  balances[receiver]+=amount;

  emit Sent(msg.sender,receiver,amount);

  }

  }

  这个合约引入了一些新的概念,让我们逐一解读。

  address public minter;这一行声明了一个可以被公开访问的address类型的状态变量。address类型是一个160位的值,且不允许任何算数操作。这种类型适合存储合约地址或外部人员的密钥对。关键字public自动生成一个函数,允许你在这个合约之外访问这个状态变量的当前值。如果没有这个关键字,其他的合约没有办法访问这个变量。由编译器生成的函数的代码大致如下所示(暂时忽略external和view):

  function minter()external view returns(address){return minter;}

  当然,加一个和上面完全一样的函数是行不通的,因为我们会有同名的一个函数和一个变量,这里,主要是希望你能明白——编译器已经帮你实现了。