开发进展

全节点钱包开发指南

微信扫一扫,分享到朋友圈

全节点钱包开发指南
0 0

上周我们发布了全节点钱包安装及挖矿指南,向LBTC社区成员详细阐述了钱包的安装步骤及如何进行挖矿的教程;同时,为了能够使LBTC社区爱好者们了解更多详细内容,在技术社区的努力下,推出本篇开发指南,欢迎社区技术爱好者使用。

安装工具

sudo apt install g++

sudo apt install autoconf

sudo apt-get install pkg-config

sudo apt install git

安装依赖库

sudo apt install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev

sudo apt install libssl-dev

sudo apt install libtool

tar -xzvf db-4.8.30.NC.tar.gzcd db-4.8.30.NC/build_unix../dist/configure –enable-cxx –disable-shared –with-pic –prefix=/home/whh/bitcoin/db4/

make

make install

sudo apt install curl

wgethttps://github.com/protocolbuffers/protobuf/archive/v3.7.0.zip

./autogen.sh

./configure CXXFLAGS=”-fPIC”

sudo make install

编译LBTC

git clonehttps://github.com/lbtcio/lbtc-core

cd lbtc-core/

./autogen.sh

./configure LDFLAGS=”-L/home/whh/db4/lib/” CPPFLAGS=”-I/home/whh/db4/include/” PROTOBUF_LIBS=”/usr/local/lib/libprotobuf.a” –enable-debug –disable-tests

make

ls -l src/bitcoind

开发工具

 ♦ 编写代码

vi

 ♦ 调试工具

gdb

程序模块

 ◆ 地址余额

比特币中只对导入私钥的地址,计算地址余额。且其性能不高。

在LBTC中,把所有地址的余额保存在内存中。程序退出时,回写文件。程序启动时,从文件中读取地址余额信息到内存中。

实现代码在src/vote.cpp:

typedef std::pair<uint160, uint8_t> CMyAddress;

std::unordered_map<CMyAddress, uint64_t, key_hash> mapAddressBalance;

 ♦ OP_RETURN

投票、注册代理人、提议案、给议案投票的数据通过OP_RETURN来承载。

业务数据格式如下:

struct COpData{

uint8_t opcode;

};

数据装入OP_RETURN前先对COpData结构进行序列化,程序接收到数据后,对数据进行反序列化操作。COpData是所有业务数据的基类,结构COpData中opcode,表示不同的业务逻辑操作。

 ♦ DPoS操作

注册代理人:

struct CRegisterForgerData : public COpData {

std::string name;

}

给代理人投票:

struct CVoteForgerData : public COpData {

std::set<CKeyID> forgers;

}

撤消代理人投票:

struct CCancelVoteForgerData : public COpData {

std::set<CKeyID> forgers;

}

 ♦ 议案操作

注册理事:

struct CRegisterCommitteeData : public COpData {

std::string name;

std::string url;

}

给理事投票:

struct CVoteCommitteeData : public COpData {

CKeyID committee;

}

撤消理事投票:

struct CCancelVoteCommitteeData : public COpData {

CKeyID committee;

}

提议案:

struct CSubmitBillData : public COpData {

CKeyID committee;

std::string title;

std::string detail;

std::string url;

std::vector<std::string> options;

uint64_t starttime;

uint64_t endtime;

}

给议案投票:

struct CVoteBillData : public COpData {

uint160 id;

uint8_t index;

}

 ♦ DPoS

DPoS规则:

●一共有101个锻造人。

●一个地址最多可以给51个锻造人投票。

●成为锻造人条件:锻造人地址上持有5000币以上;锻造人的得票数累计在前100名。

●每303秒重新计算得票数,选举出新的101个锻造人。

●不可逆转块

【不可逆转块是这个区块一定在主链上,这个区块不可逆。】

不可逆转块条件:

101个锻造人每人出一块,耗时303秒,称之为一轮出块。如一轮出块的数目达到101*90%,则前一轮的第一个区块为不可能逆块;如连续两轮出块的数目达到101*67%,

则这两轮的前一轮的第一个区块为不可逆块。

展开阅读全文
我还没有学会写个人说明!

LBTC 2018年年度报告

上一篇

2019年还有百倍币吗?

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
全节点钱包开发指南

长按储存图像,分享给朋友