设为首页收藏本站

朵朵论坛

查看: 1956|回复: 4

中级班pps开发教程(本帖作废,锁定)

 关闭 [复制链接]

该用户从未签到

146

主题

331

帖子

8778

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8778
发表于 2016-1-19 08:53:47 | 显示全部楼层 |阅读模式
PPS开发1.1
说明:
本教程只供中级班学员使用(需要通过二级造币师资格并进入专门的中级群),或者是其他能力较强,肯自学的学员使用。
不会在朵朵学院群做任何解答。
自学的学员,在本教程结束后,按要求制作出来自己的虚拟币并发布创世纪贴的学员可以直接申请三级造币师资格

版本号0.12016/1/8
修改内容:
建立基本的教学流程
除了如何生成区块链部分外,其余的都大概写了一下。
版本号0.32016/1/18
修改内容:
修改大量的内容错误,
增加创世纪块的开发内容
增加区块生成的开发内容
版本号0.9: 2016/1/18
修改内容:
提供新的源代码
修改v03的方法
提供关于参数修改的方法
版本号1.0:2016/1/19
修改内容:
更改了若干错误
增加了最后一节
版本号1.1:2016/1/19
修改内容:
增加注意事项的A项解决方法
增加注意事项的C项问题介绍。
增加最后一节关于造币师资格说明

准备阶段
文章主要分为七部分:
a Peershares项目简介
b注意事项
c如何建立环境与钱包编译
d钱包参数说明
e生成新的区块链
f钱包之间的通信
g放在后面的话
1 开发环境和pps源代码下载地址:
链接:http://pan.baidu.com/s/1c1jgZni 密码:q9hc
其中, Fuzzyshares-master.rarpps钱包源代码
2 请注意用一个干净的开发环境,不要和之前的基础班混淆,推荐是win7 64位。如果学员在开发的同时还在用基础班的开发环境在做虚拟币,那就必须重新建立一个开发环境,可以选择的有:
A新建一个虚拟机
B 弄一台新电脑
C 买一台虚拟服务器
如果不打算在基础班的开发环境继续做币,可以用以下几个步骤清除痕迹:
A删除环境设置path里面的C:\MinGW\bin;C:\Qt\4.8.5\bin;
B删除c盘下的MinGW和Qt文件夹;
C重启

Peershares项目简介
简而言之就是基于pos机制的一种可以分红的虚拟币(模板默认是利用ppc分红),是点点币社区开发,Peershares(PPS)项目共得到200BTC和6万PPC的捐助。PPS项目基于PPC链,是PPC的杀手级应用,也是PPC价值的体现所在。
举个例子说明一下:比如说某人打算用pps虚拟币进行筹款进行项目开发,当项目获得利润后,如何进行利润分配是一个难题。Pps提供了一种方法,就是可以通过pps自带的分红机制,通过将利润购买为ppc(点点币)来进行去中心化的分红。
Pps项目从2014年开始进行,历时半年完成0.1版本,之后主要开发者都将精力集中到nu资产项目的开发上来,因此pps是一个不完善的bug版本。不过由于其主要就是将ppc的pow去除,增加了一个分红功能,因此程序可以稳定运行,只是小bug很多。
朵朵学院后期将考虑组织学员进行pps的后续维护,有兴趣的可以参加。


注意事项
1.    中级班开始,因为时间有限,内容繁多,将不会发布手把手那种图文并茂的教程,但会将过程用文字尽可能的描述清楚。
2.    Peershares目前有若干个已知bug,请学员注意,并在有能力的情况下一起解决:
A运行一段时间后,任务栏将出现old warning字样,影响程度小,解决难度易
解决方法:
在main.cpp里面的2474行,将60*60*24*10改为60*60*24*60,也就是10天检查一下,改为60天。
(B0010方圆提供)
B有人报告说,钱包加密后,明明自己的密码准确无误,但却怎么也解锁不了钱包。但还需要进一步验证。影响程度大,解决难度大。
C pos出块后,有一定概率在钱包界面会显示不出来,但实际并没有丢失,只是显示的bug,影响程度中,解决难度中。


如何建立环境与钱包编译
英文资料在下面的链接:

1.   编译你的开发环境
首先要下载7zip 和Notepad++(自行下载,百度云盘没有提供)
1.1安装MinGW (MSYS)
安装mingw-get-setup.exe后运行,首先会更新一下;
然后MinGW installation manager -> All packages ->MSYS ,然后选择下面的用于安装:
msys-base-bin
然后点击Installation -> Apply changes
会更新一下,
注意:
a.找一下 msys-gcc msys-w32api如果这两个处于已经安装的状态,一定要解除.
b.这个安装过程需要联网,而且需要和互联网直连,所以单位的电脑有可能会运行不成功
1.2 安装Perl
安装ActivePerl-5.18.2.1802-MSWin32-x86-64int-298023.msi

1.3安装Python
安装python-3.3.3.amd64.msi
1.4解压缩MinGW-builds
i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z解压缩到c盘根目录下面。
1.5设置path环境
将下面部分粘贴到path里面:
C:\MinGW\msys\1.0\bin;C:\mingw32\bin;C:\Python33;C:\Perl\site\bin;C:\Perl\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
1.6查看环境配置情况
进入C:\MinGW\msys\1.0双击msys.bat.
然后键入gcc–v
可以看到下面的内容:
$ gcc -v
Using built-inspecs.
COLLECT_GCC=c:\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.8.2/lto-wrapper.exe
Target:i686-w64-mingw32
Configured with:../../../src/gcc-4.8.2/configure --host=i686-w64-mingw32--build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32--with-sysroot=/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32--with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared--enable-static --disable-multilib--enable-languages=ada,c,c++,fortran,objc,obj-c++,lto--enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp--enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string--enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2--disable-isl-version-check --disable-cloog-version-check--disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap--disable-rpath --disable-win32-registry --disable-nls --disable-werror--disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686--with-tune=generic --with-libiconv --with-system-zlib--with-gmp=/c/mingw482/prerequisites/i686-w64-mingw32-static--with-mpfr=/c/mingw482/prerequisites/i686-w64-mingw32-static--with-mpc=/c/mingw482/prerequisites/i686-w64-mingw32-static--with-isl=/c/mingw482/prerequisites/i686-w64-mingw32-static--with-cloog=/c/mingw482/prerequisites/i686-w64-mingw32-static--enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev3, Built byMinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64CFLAGS='-O2 -pipe-I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include-I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include'CXXFLAGS='-O2 -pipe-I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include-I/c/mingw482/prerequisites/i686-zlib-static/include-I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS=LDFLAGS='-pipe -L/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/lib-L/c/mingw482/prerequisites/i686-zlib-static/lib-L/c/mingw482/prerequisites/i686-w64-mingw32-static/lib-Wl,--large-address-aware'
Thread model:posix
gcc version4.8.2 (i686-posix-dwarf-rev3, Built by MinGW-W64 project)
第一部分结束!!!

2安装和配置依赖库
2.1OpenSSL
openssl-1.0.1g.tar.gz解压缩到c盘,
双击C:\MinGW\msys\1.0\msys.bat
然后在窗口里面输入如下内容:
cd /ctar zxvf openssl-1.0.1g.tar.gz -C /cmv /c/openssl-1.0.1g /c/openssl-1.0.1g-mgwcd /c/openssl-1.0.1g-mgwConfigure mingwmake
注意:因为这么长的命令很容输入错误,因此大家可以先复制,然后用鼠标点击那个窗口,然后按一下键盘上面的“insert”按钮,这段文字就可以复制进去了。
2.2Berkeley DB
db-4.8.30.NC.tar.gz拷贝到c
双击C:\MinGW\msys\1.0\msys.bat
也是一样的窗口下面输入:
cd /ctar zxvf db-4.8.30.NC.tar.gz -C /cmv /c/db-4.8.30.NC /c/db-4.8.30.NC-mgwcd /c/db-4.8.30.NC-mgw/build_unix../dist/configure --disable-replication --enable-mingw --enable-cxxmake
2.3 Boost
先将boost_1_55_0.zip解压缩到c盘根目录
点击开始菜单里面的附件里面的cmd
在命令窗口里面输入
cd C:\mv C:\boost_1_55_0 C:\boost_1_55_0-mgwcd C:\boost_1_55_0-mgwbootstrap.bat mingwb2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc stage
注意:cmd里面的命令粘贴和上面说的不太一样,大家需要右键单击命令窗口,选择复制即可
2.4 Miniupnpc
将miniupnpc-1.9右键直接解压缩到c盘
点击开始菜单里面的附件里面的cmd
窗口里面输入:
cd C:\mv C:\miniupnpc-1.9 C:\miniupnpc-1.9-mgwcd C:\miniupnpc-1.9-mgwmingw32-make -f Makefile.mingw init upnpc-staticmkdir C:\miniupnpc-1.9-mgw\miniupnpccopy C:\miniupnpc-1.9-mgw\*.h C:\miniupnpc-1.9-mgw\miniupnpc
2.5 Qrencode
这个是通过C:\MinGW\msys\1.0\msys.bat输入
cd /ctar zxvf libpng-1.6.9.tar.gz -C /ccd /c/libpng-1.6.9configuremake
然后再输入:
cd /ctar zxvf qrencode-3.4.3.tar.gz -C /cmv /c/qrencode-3.4.3 /c/qrencode-3.4.3-mgwcd /c/qrencode-3.4.3-mgw LIBS="../libpng-1.6.9/.libs/libpng16.a ../../mingw32/i686-w64-mingw32/lib/libz.a" \png_CFLAGS="-I../libpng-1.6.9" \png_LIBS="-L../libpng-1.6.9/.libs" \configure --enable-static --disable-shared make
第二部分到此结束!!!

3修改与编译
这里需要用到Notepad++进行修改。
首先将Fuzzyshares-master.rar解压缩到c盘根目录
然后编辑 C:\ Fuzzyshares-master\src\makefile.mingw
修改其绝对目录的路径,然后记得保存。
INCLUDEPATHS= \ -I"C:\boost_1_55_0-mgw" \ -I"C:\db-4.8.30.NC-mgw\build_unix" \ -I"C:\openssl-1.0.1g-mgw\include" LIBPATHS= \ -L"C:\boost_1_55_0-mgw\stage\lib" \ -L"C:\db-4.8.30.NC-mgw\build_unix" \ -L"C:\openssl-1.0.1g-mgw" LIBS= \ -l boost_system-mgw48-mt-s-1_55 \ -l boost_filesystem-mgw48-mt-s-1_55 \ -l boost_program_options-mgw48-mt-s-1_55 \ -l boost_thread-mgw48-mt-s-1_55 \ -l db_cxx \ -l ssl \ -l crypto
ifdef USE_UPNP INCLUDEPATHS += -I"C:\miniupnpc-1.9-mgw" LIBPATHS += -L"C:\miniupnpc-1.9-mgw" LIBS += -l miniupnpc -l iphlpapi DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)endif
然后记得这句话要修改一下为:
USE_UPNP:=1
通过C:\MinGW\msys\1.0\msys.bat输入
cd /c/Fuzzyshares-master/srcmake -f makefile.mingwstrip peersharesd.exe
第三节结束!!!



4.Qt钱包的修改与编译
4.1先建立一个Qt文件夹,然后将qt-everywhere-opensource-src-4.8.5.zip解压缩到里面。
然后通过cmd输入
cd C:\Qt\ qt-everywhere-opensource-src-4.8.5configure -release -opensource -confirm-license -static -no-sql-sqlite -no-qt3support -no-opengl -qt-zlib -no-gif -qt-libpng -qt-libmng -no-libtiff -qt-libjpeg -no-dsp -no-vcproj -no-openssl -no-dbus -no-phonon -no-phonon-backend -no-multimedia -no-audio-backend -no-webkit -no-script -no-scripttools -no-declarative -no-declarative-debug -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -nomake demos -nomake examplesmingw32-make
然后将"C:\Qt\qt-everywhere-opensource-src-4.8.5\bin;添加到path里面去。
4.2编辑C:\ Fuzzyshares-master\peershares-qt.pro
Notepad++进行修改
# Dependency library locations can be customized with:#    BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH,#    BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively BOOST_LIB_SUFFIX=-mgw48-mt-s-1_55BOOST_INCLUDE_PATH=C:/boost_1_55_0-mgwBOOST_LIB_PATH=C:/boost_1_55_0-mgw/stage/libBDB_INCLUDE_PATH=C:/db-4.8.30.NC-mgw/build_unixBDB_LIB_PATH=C:/db-4.8.30.NC-mgw/build_unixOPENSSL_INCLUDE_PATH=C:/openssl-1.0.1g-mgw/includeOPENSSL_LIB_PATH=C:/openssl-1.0.1g-mgwMINIUPNPC_INCLUDE_PATH=C:/miniupnpc-1.9-mgwMINIUPNPC_LIB_PATH=C:/miniupnpc-1.9-mgwQRENCODE_INCLUDE_PATH=C:/qrencode-3.4.3-mgwQRENCODE_LIB_PATH=C:/qrencode-3.4.3-mgw/.libs
并增加一句:
CONFIG += stati
4.3编译peershares-qt.exe
cmd编译:
cd C:\ Fuzzyshares-master\qmake "USE_UPNP=-" peershares-qt.promingw32-make -f Makefile.Release
双击钱包,可以打开,则本章结束!!!

钱包参数说明
钱包参数说明的原文:
对几个参数进行专门的简要说明:
Shares generated :用于钱包最早期的pow出块。默认是400,这个可以不修改。
Share minting reward:设置pos的铸币奖励
Transaction Fee:转账手续费
Distribution minimumof payout :分红最小值
Stake Spacing :出块时间
关于参数修改,在main.h里面
staticconst int STAKE_MIN_AGE = 60 * 60 * 24 * 7;
这个是pos的成熟期,一般来说37天比较好
staticconst int STAKE_MAX_AGE = 60 * 60 * 24 * 90;
这个是最长成熟期,默认90天不用改
staticconst int64 IPO_SHARES = 100000000 * COIN;
币总量
staticconst int64 PROOF_OF_WORK_BLOCKS = 180;
这个是最早期的出块,不要小于150,也不要太大,推荐为200400之间。


生成新的区块链
1时间戳设置:
打开链接:
然后复制unix时间戳里面的值,我这里是1453079649
2编辑main.cpp
a右键单击C:\ Fuzzyshares-master\src里面的main.cpp,选择edit with Notepad++
2261
const char*pszTimestamp = "intentionally broken genesis block - build is for publictestnet only!";
里面的字符串改为你想改的内容,当然也可以不改。
b2262
unsigned intnTimeGenesis=1231231231;
里面的数字改为上面得到的那个时间戳,我这里是1453079649
c2263行里面的nNonceGenesis值改为0
d保存退出

3编译与运行
a通过C:\MinGW\msys\1.0\msys.bat输入

cd /c/Fuzzyshares-master/srcmake -f makefile.mingwstrip peersharesd.exe
b然后在 cmd窗口里面输入:
cd c:\ Fuzzyshares-master\src
   peersharesd.exe
4修改与替换
a在C:\Users\Administrator\AppData\Roaming里面找到peershares的文件夹。
然后在里面找到debug.log,双击打开。
大家找到这三个值,
genesis hash=
merkle root=
nNonce=
然后把后面的值都记一下。
b将main.cpp的第24行
hashGenesisBlockOfficial("0x000000d78e35e381ca738ceb855b9faf528f0970d994ce4eb4560b56cbe2f6c4");
后面的字符串改为debug.log 里面的genesis hash值,注意0x不要一起替换了,要保留.

2263行的
unsigned int nNonceGenesis=123123;
改为debug.log里面的nNonce=的值
2313行的
assert(block.hashMerkleRoot==uint256("0xf88246c72a053cc2176dbf2ac773bcf79f021bba9c2c3c8fccc0735c37d9354c"));
后面的字符串改为debug.log 里面的merkle root=值,注意0x不要一起替换了,要保留
c打开kernel.cpp
将14行里面的
unsigned int nProtocolV03SwitchTime     = 1394841600
时间戳修改一下,
特别说明:这个时间戳不像之前的时间戳那么没有意义,这个时间戳很有用。其主要是用于这个币的正式开始。
5重新编译
通过C:\MinGW\msys\1.0\msys.bat输入
cd /c/Fuzzyshares-master/srcmake -f makefile.mingwstrip peersharesd.exe
编译结束。


钱包之间的通信
1.主节点:
peershares.conf添加这段文字
server=1rpcallowip=192.168.1.xlisten=1rpcuser=<anything>rpcpassword=<anything>dnsseed=0port=9090rpcport=9091gen=1 注意:portrpcport是可以制定的,建议在1000040000之间。
2.其他链接的节点,在peershares.conf里面添加connect=192.168.1.88:9090
即可,注意这个ip要改为你主节点的ip
3.先启动主节点,然后启动其他节点,然后主节点会自动挖矿。生成400个块。然后就结束。
注意:请修改irc.cpp里面的301302行,将里面的sssssscoin改名为你的币名
请修改net.cpp里面的10041007行,将127.0.0.1改名为你的主节点ip
这样可以避免区块混淆。

放在后面的一些话
这里主要说几个事情
1.   关于币名的修改和logo替换
在基础班已经讲过了,不予重复
2.   关于钱包运行的方法
因为pps是彻底的pos出块模式,因此在一开始出块不均匀的时候,会发现有一段时间出块非常的密集,有的时间则一个块都没出。
具体来说,就是一开始会非常快的pow出来180个块,然后就什么反应都没有,那是因为pos还没有开始,你需要等到pos开始后才能观察到,默认的pos是7天,也就说是需要过七天才能观察到。而等pos出块均匀,可以正常使用则需要更长的时间。
我做的第一个朵朵币就是基于pps做的,完全正常运行大概花了一个月的时间。
学员做币的时候要有足够的耐心
3.   关于什么是二代币,以及为什么pps属于二代币
二代币的标准众说纷纭。朵朵学院关于二代币的标准就是,在程序底层具有除了基本功能外的其他实用功能的虚拟币。
Pps由于内嵌了分红功能,所以属于二代币。
4.    关于可能出现的一些问题
A可能会与其他不同类型的钱包重合。解决方法是在“钱包之间的通信”一节当中
B在第一次运行钱包的时候可能会出现loadindex error字样,只要再重启一次钱包即可解决。
5.    关于三级以上造币师的认证标准
三级造币师是学会pps币的win版本并发布创世纪贴
目前正在制作三级造币师的教程
四级造币师分ABC证,学会哪个内容并发布创世纪贴,就发哪个证
A证,pps的linux开发
B证,区块浏览器开发
C证,pps的osx开发
四级造币师的教程将在二至三月份制作

五级造币师将进入高级版,也是满十人授课
五级造币师将通过若干例程讲授如何通过某个钱包的源代码改造来克隆某一个具体的钱包。
五级造币师时间未定。
  • TA的每日心情
    开心
    2016-2-19 16:56
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    3

    主题

    9

    帖子

    258

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    258
    发表于 2016-1-19 09:07:57 | 显示全部楼层
    院长辛苦了!支持
    该会员没有填写今日想说内容.
  • TA的每日心情
    郁闷
    2016-4-26 14:51
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    3

    主题

    26

    帖子

    650

    积分

    高级会员

    Rank: 4

    积分
    650
    发表于 2016-2-8 19:03:52 | 显示全部楼层
    看完了,可以直接申请三级了
    哎...今天够累的,签到来了1...
  • TA的每日心情

    2016-2-29 13:10
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    1

    主题

    9

    帖子

    219

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    219
    发表于 2016-2-29 00:41:20 | 显示全部楼层
    2.3 boots 那一步出错
    做不下去了,出错了,今天又要通宵

    该用户从未签到

    146

    主题

    331

    帖子

    8778

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    8778
     楼主| 发表于 2016-2-29 06:55:42 | 显示全部楼层
    516292624 发表于 2016-2-29 00:41
    2.3 boots 那一步出错

    输入命令那部分直接看英文原文。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|朵朵社区一起购物吧|朵朵    

    GMT+8, 2018-11-22 00:53 , Processed in 0.187501 second(s), 31 queries .

    Powered by Discuz! X3.2

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表