DAPP币安链BSC/波场链TRC/以太链ETH智能合约代币流动性质押挖矿分红系统开发详细及逻辑

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:  用户合约在创建时,系统会自动创建一个新的数据库给该合约,所以不同的用户合约的状态数据以数据库进行区隔。在创建合约对应的数据库后,系统会执行合约init_contract函数中的SQL语句,包含非数据库事务的DDL语句,出于安全考虑,一个创建合约的交易或升级合约的交易将会被单独打包到区块中,不能与其他普通合约调用的交易一起打包。

  合约创建

  用户合约在创建时,系统会自动创建一个新的数据库给该合约,所以不同的用户合约的状态数据以数据库进行区隔。在创建合约对应的数据库后,系统会执行合约init_contract函数中的SQL语句,包含非数据库事务的DDL语句,出于安全考虑,一个创建合约的交易或升级合约的交易将会被单独打包到区块中,不能与其他普通合约调用的交易一起打包。

  合约调用

  用户在合约中拼接SQL语句,并以字符串形式传入合约SDK,在合约执行时,由于无法像KV数据那样生成读写集,然后基于读写集判断一个区块中的多笔交易是否允许并行执行还是串行执行,所以在支持SQL合约的执行过程中,将全部按串行方式执行。一个区块对应一个数据库中的事务,区块开始处理第一笔交易时开启事务,然后针对每一笔交易,在交易执行前将建立事务的SavePoint保存点,然后再逐步执行交易中的多条SQL语句,如果全部SQL语句执行完成,并交易结果返回成功,那么将会把所有DML语句记录到写集中(SELECT语句不产生数据变更,不记录到写集),并建立一个新的事务SavePoint,继续处理下一笔交易。但一旦该交易中有SQL语句执行失败,或者最终该交易的结果返回为失败,则回滚到上一个SavePoint,并清空该交易的读写集。直到处理完本区块的最后一笔交易,提交整个数据库事务,每个合约对其状态数据库的更改落盘完成。

  SPV轻节点配置参数

  spv.yml配置文件如下:

  注意:SPV轻节点配置文件中的路径请使用绝对路径。

  #链配置chains:#类型,当前仅支持(ChainMaker_Light,ChainMaker_SPV,Fabric_SPV)三种类型-chain_type:"ChainMaker_Light"#链ID chain_id:"chain1"#同步链中节点区块最新高度信息的时间间隔,单位:毫秒sync_interval:10000#并发请求区块的数量concurrent_nums:100#sdk配置文件路径sdk_config_path:"/release_path/config/chainmaker/chainmaker_sdk.yml"#类型,

  当前仅支持(ChainMaker_Light,ChainMaker_SPV,Fabric_SPV)三种类型-chain_type:"ChainMaker_SPV"#链ID chain_id:"chain1"#同步链中节点区块最新高度信息的时间间隔,单位:毫秒sync_interval:10000#并发请求区块的数量concurrent_nums:100#sdk配置文件路径sdk_config_path:O7I8,"/release_path/config/chainmaker/chainmaker_sdk.yml"#类型,当前仅支持(ChainMaker_Light,ChainMaker_SPV,Fabric_SPV)三种类型-chain_type:

  "Fabric_SPV"#链ID chain_id:"mychannel"#同步链中节点区块最新高度信息的时间间隔,单位:毫秒sync_interval:10000#并发请求区块的数量concurrent_nums:100#sdk配置文件路径sdk_config_path:"/release_path/config/fabric/fabric_sdk.yml"#fabric特有的配置项,其他类型的链不需要配置fabric_extra_config:#节点列表peers:-peer:"peer0.org1.example.com"-peer:"peer1.org1.example.com"#grpc配置grpc:#grpc监听网卡地址address:127.0.0.1#grpc监听端口port:12345#是否开启tls验证enable_tls:false security:#是否开启CA验证ca_auth:false#ca文件ca_file:-"/release_path/config/tls/ca.pem"#tls证书文件cert_file:"/release_path/config/tls/server.pem"#tls私钥文件key_file:

  "/release_path/config/tls/server.key"#web配置web:#web服务监听网卡地址,http或https由${enable_tls}参数判断,无需配置address:127.0.0.1#web监听端口port:12346#是否开启tls验证enable_tls:false security:#是否开启CA验证ca_auth:false#ca文件ca_file:-"/release_path/config/tls/ca.pem"#tls证书文件cert_file:"/release_path/config/tls/server.pem"#tls私钥文件key_file:

  "/release_path/config/tls/server.key"#存储配置storage:#存储类型,当前仅支持leveldb类型provider:"leveldb"#leveldb的详细配置leveldb:#leveldb的存储路径store_path:"/release_path/data/spv_db"#leveldb写入Buffer大小,单位:MB write_buffer_size:32#leveldb布隆过滤器的bit长度bloom_filter_bits:10#日志配置,用于配置日志的打印log:#日志打印级别log_level:"INFO"#日志文件路径file_path:

  "/release_path/log/spv.log"#日志最长保存时间,单位:天max_age:365#日志滚动时间,单位:小时rotation_time:1#是否展示日志到终端,仅限于调试使用log_in_console:false#是否打印颜色日志show_color:true

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
存储 安全 分布式数据库
BSC链DAPP质押合约代币系统开发|详情需求|指南方案
区块链的核心思想是将数据分散存储在多个节点上,通过加密算法和共识机制保证数据的安全性和可信度
|
6月前
|
存储 区块链 数据库
DAPP链上合约代币质押LP系统开发技术
区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现。
|
安全 区块链
DAPP公链质押链上代币兑换LP系统开发模式方案
随着区块链技术的不断发展,DAPP的应用范围也在不断扩大
|
存储 安全 区块链
BSC币安链DAPP质押LP兑换模式系统开发规则与指南
区块链技术是实现Web3.0的核心前提:区块链技术是一种高级数据库机制
|
存储 区块链 数据安全/隐私保护
BSC币安链流动性质押分红dapp系统开发智能合约定制案例详情
BSC币安链流动性质押分红dapp系统开发智能合约定制案例详情
|
存储 安全 区块链
​​  DAPP链上质押挖矿系统开发
DAPP链上质押系统开发,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库  
|
网络协议 JavaScript 前端开发
以太链丨火币链丨币安链丨波场链代币合约流动性质押挖矿分红系统开发逻辑及方案(LP代币分红机制开发)
 Chaincode是一个程序,Chaincode运行在一个被背书peer进程独立出来的安全的Docker容器中,Fabric中支持多种语言实现链码,包括golang、javascript、java等。当前主要以Golang为主,性能和稳定性都较好
|
JavaScript 前端开发 程序员
以太链丨火币链丨币安链丨波场链DAPP代币合约流动性质押挖矿分红系统开发实现技术方案及详细代码
在确定部署智能合约前,需要定义业务逻辑和需求,即相关各方定义智能合约的具体业务条件,由开发人员作为最后的接收方。开发人员再来根据业务逻辑设计合约的体系结构,包含设计智能合约中数据的结构,以及合约中数据状态改变与之相关的方法代码。
|
区块链 数据库
defi/nft/lp/dapp/dao以太链/波场链/火币链/币安链发行合约代币流动性质押挖矿分红系统开发(稳定版)及代码部署
 智能合约与区块链的结合形成了智能合约法规自动执行系统,该系统有三个重要的原则:   首先,智能合约数据来源于链上。这是指智能合约的输入是从区块链的数据库里面出来的。这些数据是由区块链保证的,具有真实难以篡改的特征。
|
JavaScript Java Go
深入分析以太链/波场链/火币链/币安链LP代币合约流动性质押挖矿分红机制系统开发详细逻辑及源码
 Fabric's smart contract is called chain code, which is divided into system chain code and user chain code. System chain code is used to realize system level functions, and user chain code is used to realize user application functions. The chain code is compiled into an independent application that