defi/nft/lp/dapp/pil代币合约质押挖矿分红开发源码丨defi/nft/lp/dapp/pil代币合约质押挖矿分红系统开发实现技术原理

简介: Liquid内置了一个该接口的实现——pubsub.ChainPubSub。ChainPubSub是基于应用协议实现的链级数据隔离消息发布及订阅服务。ChainPubSub代码在pubsub包中。

Liquid核心包有为PubSub定义接口,在core/broadcast/pubsub.go中broadcast.PubSub interface。

Liquid内置了一个该接口的实现——pubsub.ChainPubSub。ChainPubSub是基于应用协议实现的链级数据隔离消息发布及订阅服务。ChainPubSub代码在pubsub包中。

ChainPubSub将节点间连接关系划分为FullMsg、MetaDataOnly、FanOut三种状态。当某一节点发布消息时,FullMsg连接会传输全量数据;MetaDataOnly连接会传输元数据;FanOut连接会传输全量数据。元数据可以理解为仅包含消息的原始创建者和消息的编号,不包含详细信息。ChainPubSub使用类Gossip进行辅助传播等。

关于FanOut:假如有这样一个情况,节点A订阅了topicA,但是和A有连接的节点都没有订阅topicA,那A在该topic上发布一个消息,怎么传播到整个网络?答案就是FanOut。FanOut连接会传输全量数据,且允许连接中的一个节点没有订阅对应的topic。如果该节点由未订阅转换成已订阅,FanOut会立刻升级为FullMsg连接。同理处于FullMsg连接的节点如果取消订阅,则会降级为FanOut连接。这种连接状态在保持全量消息传输的同时,还起到了标识节点是否订阅的作用。

一个节点想要加入整个p2p网络,需要和种子节点创建连接,但是种子节点的数量有限,通常需要和其他非种子节点创建连接,才能达到足够的连接数量。如何让一个节点,发现其他节点的网络地址,就是节点发现服务需要实现的功能。

liquid的节点发现服务,其接口定义在core/discovery/discovery.go中discovery.Discovery interface。

Liquid内置了一个该接口的实现——protocoldiscovery.ProtocolBasedDiscovery。ProtocolBasedDiscovery是基于应用协议注册迭代查询实现的节点发现服务。ProtocolBasedDiscovery源代码在discovery/protocoldiscovery包中。

ChainMaker的P2P网络每一个节点即可以是客户端又可以是服务端,如果所有的节点都处于相同的网络环境中,一般不会出现问题。当不同的节点位于不同的内网环境中,节点与节点之间通信可能会遇到阻碍。例如下图所示:

假设node1和node2在内网1中,而node3和node4在内网2中,这时候node1和node2可以通过内网地址连接通信,node3和node4可以通过内网地址连接通信。但是内网1中的node1和node2,想要与内网2中的node3和node4建立P2P网络,就必须知道node3和node4的映射的外网地址,不然根本无法找到node3和node4与其通信。

Relay的功能
Liquid网络提供了中继转发的功能,当两个节点因为网络环境的原因,不能直接连接,可以利用中继节点,对流量数据进行转发,从而达到点对点传输的效果。如下图示:

Relay的基本流程
Relay的原理比较简单,假设中继节点为R,A节点可以拨号连接到中继节点R,B节点可以拨号连接到中继节点R,A节点通过中继节点R,将数据转发到B节点,这样使A和B节点也能做到数据交互。

下面引用libp2p中继流程描述:

phase I: Open a request for a relayed stream (A to R).

A dials a new stream sAR to R using protocol liquid-relay.

A sends a CircuitRelay message with { type: 'HOP', srcPeer: '/p2p/QmA', dstPeer: '/p2p/QmB' } to R through sAR.

R receives stream sAR and reads the message from it.

phase II: Open a stream to be relayed (R to B).

R opens a new stream sRB to B using protocol liquid-relay.

R sends a CircuitRelay message with { type: 'STOP', srcPeer: '/p2p/QmA', dstPeer: '/p2p/QmB' } on sRB.

R sends a CircuitRelay message with { type: 'STATUS', code: 'SUCCESS' } on sAR.

phase III: Streams are piped together, establishing a circuit

B receives stream sRB and reads the message from it

B sends a CircuitRelay message with { type: 'STATUS', code: 'SUCCESS' } on sRB.

B passes stream to NewConnHandler to be handled like any other new incoming connection.

相关文章
|
算法 区块链
Defi+NFT质押流动性挖矿系统开发/LP质押挖矿功能开发解析
Defi+NFT质押流动性挖矿系统开发/LP质押挖矿功能开发解析
|
区块链
defi/lp/nft/dapp代币预售合约流动性质押挖矿开发正式版,defi/lp/nft/dapp代币预售合约流动性质押挖矿系统开发(方案及详细)
 智能合约(Smart contract)是依托计算机在网络空间运行的合约,它以信息化方式传播、验证或执行合同,由计算机读取、执行,具备自助的特点。而区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现
|
存储 算法 安全
dapp/lp/nft/defi质押挖矿开发运营版丨lp/nft/defi/dapp质押挖矿系统开发(逻辑及详情)丨质押挖矿成熟源码案例部署
SYSTEM_CONTRACT_DPOS_STAKE: 由于stake合约地址是由合约名通过sha256计算后base58编码得到的,为固定值;但base58的值可读、可写不便,容易配置出错,因此,对于stake合约的地址配置为合约名;链启动后可以通过该命令查询stake合约地址
|
缓存 算法 安全
浅谈defi/nft/lp/pil/dapp代币智能合约流动性质押挖矿系统开发(技术方案及逻辑)丨代码部署
// Proposal defined a consesensus proposal which can // be gossiped to other node and can be serilized // for persistent store. message Proposal {
dapp/defi/nft/lp借贷理财流动性质押挖矿开发功能版,dapp/defi/nft/lp借贷理财流动性质押挖矿系统开发(开发方案)
From the perspective of conceptual model,the metauniverse is the superposition of technology system,content system,economic system,cooperation system and governance system.The core of the technical system is integration,and its technical system should be characterized by open
|
区块链 索引
DAPP/LP代币智能合约流动性质押挖矿互助公排开发需求丨DAPP/LP代币智能合约流动性质押挖矿互助公排系统开发详细及方案
 以区块链为核心的数字科技可以推动信息技术服务,从而促进数字产业化;元宇宙可以创造和创新更广泛的应用场景,拉动信息消费促进产业数字化。因此,以区块链为核心的Web3.0技术体系推动形成的元宇宙数字生态,将对数字产业化和产业数字化提供有力支撑,为数字经济高质量发展打造新引擎。
|
区块链
代币合约dapp开发丨代币合约dapp流动性质押挖矿分红系统开发实现技术案例及源码
 因为整个区块链系统是点对点的对等网络,没有统一的中心机构协调各个节点的行为,所以在生成区块时,各个节点的行为都是相互独立的,很有可能同时由多个矿工在同一区块高度生成出2个以上的区块来。这些区块打包的交易很可能是不一样的,同时满足条件的数字n不是唯一的,多个矿工之间生成的数字n是不一样的,但是同样是满足不等式的。在这种情况下,网络中的其他节点很可能同步到不同的区块数据,并且这些数据在数学上都是合法的、有效的。当不同的节点中的不同的区块作为当前最新区块时,就会存在分叉的情况,即不同的矿机对同一高度的区块生产了内存不一样的新区快,并且这些矿工都找到了满足不等式的数字n。
|
JavaScript
dapp/lp/defi/nft流动性质押挖矿稳定版,dapp/lp/defi/nft流动性质押挖矿分红系统开发详细案例及功能
  Debit and credit voucher:When you deposit a token in Compound,you will get a credit voucher cToken.cToken is the ownership of the user's pledge token.You can exchange the original token and withdraw the corresponding profits in the Compound agreement.
defi丨dapp丨nft丨lp流动性质押挖矿分红开发详细,defi丨dapp丨nft丨lp流动性质押挖矿分红系统开发(源码版)
 Liquidity mining encourages users to pledge tokens and pledge vouchers to liquidity mining contracts. For users, using DeFi will not only gain the original profits, but also obtain liquidity mining rewards. Inspired by liquidity mining, it has promoted users to become the LP of DeFi and promoted th
|
缓存 API 区块链
defi+nft+lp+dapp+dao智能合约流动性质押挖矿分红开发源码,defi+nft+lp+dapp+dao智能合约流动性质押挖矿分红系统开发详细及方案
  以最简单的方式来说,区块链记录着更新账本状态的交易,且记录不可篡改。智能合约以编程方式访问账本两个不同的部分:一个是区块链(记录所有交易的历史,且记录不可篡改),另一个是世界状态(保存这些状态当前值的缓存,是经常需要用到的对象的当前值)。