Metaforce/Forsage/佛萨奇2.0开发稳定版,Metaforce/Forsage/佛萨奇2.0系统开发(开发案例)丨成熟技术

简介: Plasma是通过创建区块链的“树”来提高可扩展性的另一种方式,主链是树的根,而“子”区块链尽可能少地与更高级别的链互动。例如Loom的PlasmaChain和OmigeGO Plasma

Plasma是通过创建区块链的“树”来提高可扩展性的另一种方式,主链是树的根,而“子”区块链尽可能少地与更高级别的链互动。例如Loom的PlasmaChain和OmigeGO Plasma。

  加密存储(Encrypted storage):使用密码学对数据进行数学加密和解密,包括静态(即存储在特定的计算机上)和动态(即从一台计算机传输到另一台)。例如静态指的是存储加密,动态指的是传输加密(HTTPS就是一种传输加密)

  状态机是由状态寄存器和组合逻辑电路构成的,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。区块链可以理解为一种被实例化为创世状态的状态机,并且有非常严格的规则(即共识)来定义该状态如何转换。

  //如果tokenA,tokenB的流动池不存在,就创建流动池

  if(IUniswapV2Factory(factory).getPair(tokenA,tokenB)==address(0)){

  IUniswapV2Factory(factory).createPair(tokenA,tokenB);

  }

  //获取tokenA,tokenB的目前库存数量

  (uint reserveA,uint reserveB)=UniswapV2Library.getReserves(factory,tokenA,tokenB);

  if(reserveA==0&&reserveB==0){

  //如果库存数量为0,也就是新建tokenA,tokenB的流动池,那么实际添加的amountA,amountB就是amountADesired和amountBDesired

  (amountA,amountB)=(amountADesired,amountBDesired);

  }else{

  //reserveA*reserveB/amountADesired,算出实际要添加的tokenB数量amountBOptimal

  uint amountBOptimal=UniswapV2Library.quote(amountADesired,reserveA,reserveB);

  if(amountBOptimal<=amountBDesired){

  //如果amountBMin<=amountBOptimal<=amountBDesired,amountA和amountB就是amountADesired和amountBOptimal

  require(amountBOptimal>=amountBMin,'UniswapV2Router:INSUFFICIENT_B_AMOUNT');

  (amountA,amountB)=(amountADesired,amountBOptimal);

  }else{

  //reserveA*reserveB/amountBDesired,算出实际要添加的tokenA数量amountAOptimal

  uint amountAOptimal=UniswapV2Library.quote(amountBDesired,reserveB,reserveA);

  //如果amountAMin<=amountAOptimal<=amountADesired,amountA和amountB就是amountAOptimal和amountBDesired

  assert(amountAOptimal<=amountADesired);

  require(amountAOptimal>=amountAMin,'UniswapV2Router:INSUFFICIENT_A_AMOUNT');

  (amountA,amountB)=(amountAOptimal,amountBDesired);

  }

  }

  }

  function _addLiquidity(

  address tokenA,

  address tokenB,

  uint amountADesired,

  uint amountBDesired,

  uint amountAMin,

  uint amountBMin

  )internal virtual returns(uint amountA,uint amountB){

  if(IUniswapV2Factory(factory).getPair(tokenA,tokenB)==address(0)){

  IUniswapV2Factory(factory).createPair(tokenA,tokenB);

  }

  (uint reserveA,uint reserveB)=UniswapV2Library.getReserves(factory,tokenA,tokenB);

  if(reserveA==0&&reserveB==0){

  (amountA,amountB)=(amountADesired,amountBDesired);

  }else{

  uint amountBOptimal=UniswapV2Library.quote(amountADesired,reserveA,reserveB);

  if(amountBOptimal<=amountBDesired){

  require(amountBOptimal>=amountBMin,'UniswapV2Router:INSUFFICIENT_B_AMOUNT');

  (amountA,amountB)=(amountADesired,amountBOptimal);

  }else{

  uint amountAOptimal=UniswapV2Library.quote(amountBDesired,reserveB,reserveA);

  assert(amountAOptimal<=amountADesired);

  require(amountAOptimal>=amountAMin,'UniswapV2Router:INSUFFICIENT_A_AMOUNT');

  (amountA,amountB)=(amountAOptimal,amountBDesired);

  }

  }

  }

相关文章
AutoJS4.1.0实战教程---快刷短视频
AutoJS4.1.0实战教程---快刷短视频
298 1
|
Kubernetes 网络性能优化 调度
Koordinator v1.4 正式发布,为用户带来更多的计算负载类型和更灵活的资源管理机制
Koordinator v1.4 正式发布!为用户带来更多的计算负载类型和更灵活的资源管理机制
|
消息中间件 分布式计算 负载均衡
ZooKeeper应用案例
【2月更文挑战第24天】
|
Web App开发 JavaScript 前端开发
JavaScript——定时器为什么是不精确的
JavaScript——定时器为什么是不精确的
183 0
|
存储 Kubernetes API
在K8S中,calico工作原理与网络模式是什么?
在K8S中,calico工作原理与网络模式是什么?
|
缓存 分布式计算 NoSQL
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
148 2
|
存储 大数据 数据管理
数据仓库(08)数仓事实表和维度表技术
所谓的事实表和维度表技术,指的就是如何和构造一张事实表和维度表,是的事实表和维度表,可以涵盖现在目前的需要和方便后续下游数据应用的开发
291 1
|
Cloud Native 测试技术 开发工具
通过 OpenKruise 实现基于 Higress 的全链路灰度
通过 OpenKruise 实现基于 Higress 的全链路灰度
951 52
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得
|
数据挖掘 数据中心
开发杭州亚运会现场比赛直播收看平台成品源码解决方案
杭州亚运会是亚洲地区最重要的体育盛事之一,吸引着数亿观众的关注。如果您希望在3-7天内快速搭建一个全功能的亚运会直播赛事平台,那么"东莞梦幻网络科技"提供的现成源码解决方案可能正是您需要的。在本文中,我们将介绍如何这一解决方案,具备哪些功能以满足搭建完善的亚运会直播赛事平台。
下一篇
开通oss服务