广州列举网 > 商务服务 > 网站/软件服务 > 分投趣Fintoch借贷质押模式系统开发部署技术
广州
[切换城市]

分投趣Fintoch借贷质押模式系统开发部署技术

更新时间:2023-04-15 13:45:39 浏览次数:155次
区域: 广州 > 天河 > 珠江新城/跑马场
类别:软件开发
地址:广州天河区
智能合约是一种计算机代码,【18I链上合约-259l开发系统3365】可简化某些协议的执行并中间商的需求。智能合约和区块链是相关技术,因为后者是一个智能合约平台。换句话说,智能合约建立在区块链上。

有大量智能合约应用程序和智能合约用例。

交付服务是智能合约的例子之一:智能合约可以在包裹交付后自动将钱转账给快递员。无需签署任何传统合同,发送方只需用加密货币填充智能合约,然后智能合约通过硬币(例如和智能合约)来处理所有事务。

换言之智能合约会在满足某些条件时执行写入其代码中的内容,使交易透明,防欺诈,更快且不可逆,不需中央授权,代码可以帮助交易双方在没有中间人的情况下进行协作。

智能合约的概念已经探讨了20多年,随着区块链技术的到来,才有机会获得更广泛的利用。

pragma solidity >=0.7.0 <0.9.0;

//用Remix编写,需手动调用function以实现相关功能
contract SimplePaymentChannel{
  address payable public sender;//发件人地址
  address payable public recipient;//收件人地址
  uint public expiration;//存储合约到期时间,防止收件人一直不关闭合约,占用发件人以太币资源

  //构造函数,部署合约时调用,仅调用一次
  //初始化发件人地址,收件人地址,合约有效时间
  constructor(address payable recipientAddress, uint256 duration) payable{
    sender = payable(msg.sender);//msg.sender是address类型,需强制类型转换为payable address类型
    recipient = recipientAddress;
    expiration = block.timestamp + duration;
  }

  //销毁合约,只有收件人能销毁合约
  function close(uint256 amount, bytes memory signature) external{
    //require()中判断条件为true则继续,为false则退出该function,回退该function内所有更改
    require(msg.sender == recipient);//判断调用该function地址是否为收件人
    require(isValidSignature(amount, signature));//判断收件人是否掌握有正确的的发件人消息签名

    recipient.transfer(amount);//把应得的以太币发送给收件人,谁调用transfer(),就给谁转账
    selfdestruct(sender);//销毁当前合约,将合约剩余资金发送到给定地址sender
    //由于合约内容已被记录在旧的区块上,仍可以被查询,但不能被再次调用,除非重新部署该合约
  }

  //合约有效期续期,仅有发件人可以调用
  function extend(uint256 newExpiration) external{
    require(msg.sender == sender);//判断调用者是否为发件人
    require(newExpiration > expiration);//判断新的有效期是否大于当前有效期

    expiration = newExpiration;//重置合约有效期
  }

  //判断当前合约是否在有效期内
  function claimTimeout() external{
    require(block.timestamp >= expiration);//判断当前合约是否过期,若过期,则销毁合约
    selfdestruct(sender);//销毁合约
  }

  //函数isValidSignature(),splitSignature(),recoverSigner(),prefixed()涉及到 椭圆曲线加密 消息的验证过程,
  //详见我的另一篇博客https://ww******/forkroad/p/16121333.html,有详细介绍
  function isValidSignature(uint256 amount, bytes memory signature) internal view returns(bool){
    bytes32 message = prefixed(keccak256(abi.encodePacked(this, amount)));//根据当前地址this和转账金额amount双重加密为消息message
    return recoverSigner(message, signature) == sender;//
  }
广州网站/软件服务相关信息
11月19日
11月11日
11月11日
11月11日
11月11日
11月11日
11月9日
注册时间:2022年07月01日
UID:739123
---------- 认证信息 ----------
手机已认证
查看用户主页