慢钱头条

山寨币开发之比特币源码分析(一)

举报 来源: 区块链交流社区 2017-05-02 11:47 作者:某小编

在上一篇我们了解了ubuntu系统环境,我们开始要进行自己的比特币开发了,先从github上https://github.com/bitcoin/bitcoin)fork一下源代码,如下

然后可以通过clone下载到本地zip格式进行解压,可以通过ubuntu命令创建我们的工作目录

1
2
mkdir src
cd src

我们需要对其进行解压。我们这里得到的是最新的版本,比特币的编译需要一定的环境要求,我们在之前的ubuntu环境搭建中已经配置过了,我们先进行比特币的编译

1 cd bitcoin
2 aclocal
3 automake --add-missing
4 ./configure --with-incompatible-bdb
5 make

编译速度看电脑配置,一般十分钟左右,编译成功后,我们可以用以下代码查询是否成功编译出了主要文件,如果其中出现了问题,一般都是由于库没有安装完全或版本不一致的情况,我们可以参考环境配置的文章进行排除。我们看看下面的文件在不在。


1
2
3
ls src/bitcoind
ls src/bitcoin-cli
ls src/qt/bitcoin-qt

如果都在那么说明已经成功了,下面我们可以开始打开源码进行修改了。

首先我们需要进入chainparams.cpp,在src文件里面找到这个文件,用你们喜欢的编辑器打开,我们在140多行的地方找到如下显示的代码

山寨币开发之比特币源码分析(一)

我们需要把这几行代码改成

1
( 0, uint256("0x001"));

这是为了去掉区块的信息,这些代码都是比特币运行过程中产生的,前面的数字是区块号,后面一串是hash值,接下来的几行代码通过英文注释我们可以看到,第一行代表上个检查点的时间,第二行是创始块直到上次检查时的交易数量。第三行表示平均每天的交易量。我们在终端运行:

date +%s

这个命令会产生当时的unix时间戳,我们把显示的时间戳换到第一行中。

第二行和第三行随便填吧,没什么区别。

然后我们再找到如下代码

山寨币开发之比特币源码分析(一)

这几行代码会在CMainParams和CTestParams 。CTestNetParams中出现,我们需要修改后面的十六进制数,在函数中有四行指针代码,pchMessageStart。一般作为用来对比特币的交易进行验证的协议(protocol)。

其中每个数组的值都是0-255中的数值,以16进制的形式表示。他们一旦改变,任何人都无法将我们的客户端连进比特币的了。我们可以在http://numbermonk.com/?all=1 的表中从0-255找到我们喜欢的数字填进去。如果可以的话,再找8个填进CTestNetParams和CRegTestParams。

    然后,nDefaultport是默认的端口号,我们可以在这个数字上加个1000改变它,在CTestParams和CTestNetParams也要修改。

    下面的代码是vAlertPubKey。所以我们需要更改alert和genesis coinbase的key值。我们用命令行生成一些


1
2
3
4
5
6
openssl ecparam -genkey -name secp256k1 -out alertkey.pem
openssl ec -in alertkey.pem -text > alertkey.hex
openssl ecparam -genkey -name secp256k1 -out testnetalert.pem
openssl ec -in testnetalert.pem -text > testnetalert.hex
openssl ecparam -genkey -name secp256k1 -out genesiscoinbase.pem
openssl ec -in testnetalert.pem -text > genesiscoinbase.hex

    这样我们就得到了一系列alertkey和genesiscoinbase key。我们首先打开alertkey cat alertkey.hex。我们把‘pub’和‘ASN1 OID: secp256k1′中间的5行数值去掉冒号和空格填到vAlertPubKey = ParseHex(“…”);里去。然后我们再用cat testnetalert.hex把其中的数据填入到CTestNetParams函数中去。


    下面我们更改时间标签pszTimestamp。在这一行

const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";

是一行是一个约定,中本聪在创造比特币的时候加入了当天报纸的头条,这是要一个很聪明的办法,我们也可以修改成自己当前的时间。

    接下来我们将创始块的pubkey填进去。打开cat genesiscoinbase.hex,在

txNew.vout[0].scriptPubKey = CScript() << ParseHex("...") << OP_CHECKSIG;
中插入我们的key值。同样的去掉冒号和空格。
然后我们找到下面的代码,把它注释掉,这是创世块的hash值和mekle值,
1
2
assert(hashGenesisBlock == uint256("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"));
assert(genesis.hashMerkleRoot == uint256("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
我们再看到如下代码:


这些vSeeds是比特币的节点,我们现在还没有自己的服务器,可以先注释掉,以后再添加。

接下来是很重要的一部,我们要挖第一个创世块的值,下面我们来产生,Genesis block,用下面代码来产生,把下述产生创始区块的代码,粘贴在 nNonce 下面,刚好在 hashGenesisBlock

这段代码可以得到创世块的hash值和mekle值,我们只需要在源码中修改就行了,在下面我们要修改名字和logo。

我们以sqcoin(深丘币)做例子,大家可以改成自己喜欢的名字,

1
2
3
4
5
6
7
8
9
10
cd ~/src/newcoin
find . -type f -print0 | xargs -0 sed -i 's/bitcoin/newcoin/g'
find . -type f -print0 | xargs -0 sed -i 's/Bitcoin/Newcoin/g'
find . -type f -print0 | xargs -0 sed -i 's/BitCoin/Newcoin/g'
find . -type f -print0 | xargs -0 sed -i 's/BITCOIN/NEWCOIN/g'
find . -type f -print0 | xargs -0 sed -i 's/BTC/NCN/g'
find . -type f -print0 | xargs -0 sed -i 's/btc/NCN/g'
find . -type f -print0 | xargs -0 sed -i 's/Btc/NCN/g'
find . -exec rename 's/bitcoin/newcoin/' {} ";"
find . -exec rename 's/btc/NCN/' {} ";"

前8行代码将文件中的bitcoin进行替换,后两行将文件名替换为我们的新名字。

LOGO在qt客户端的图片文件主要存放在src/qt/res中。将其中的图片文件按照原来的像素大小一一替换掉即可。

现在我们编译我们自己的newcoin


1
2
3
4
aclocal
automake --add-missing
./configure --with-incompatible-bdb
make

当然,这本质上还是比特币,算法并没有改变,也还是pow证明,如果想做一个pos币的话就需要更多的修改了,或者可以修改点点币和黑币,它们都是基于pos的币,也都是fork了比特币,在比特币的基础上修改而来的,我们除了要修改上面提到的,还有很多不一样的地方。


山寨币开发之比特币源码分析(一)

创业不易,需您鼓励!

 


说说比特币_金融博览杂志

比特币(BitCoin)的概念最初由“中本聪”在2008年提出,根据开源软件的设计思路建构一种点到点(P2P)形式的数字货币。比特币不依靠特定货币机构发行,它由特定算法通过大量的计算产生,使用网络上众多节点构成的分布式数据库来确认并记录所有的比特币交易行为,并使用密码学的设计来确保货币流通各个环节的安全性。比特币从诞生起,跌跌撞撞已经走过了八个年头,在网络商务市场生存了下来并占有一些份额。但是比特...

 

什么是比特币,你真的了解比特币吗?_财富词典

点击屏幕右上方三个点点,选择分享按钮,让更多人看到小司优质原创内容。分享是一种美德哦文字版本适用于没有WIFI的情况下观看今天我要讲的这个词就是比特币最近大家如果知道这个比特币应该是因为这个东西价格涨得真是非常非常的猛,去年一年比特币从2000多块钱一个涨到了9000多块钱,然后又因为国家有关部门出来说了句话这两天价格又迅速地跳水,那么这个比特币到底是什么东西?怎么比股市还疯狂?今天我们就来聊聊这...

 

P网表示5月初要下线17种山寨币,未来的投资,该如何辨别山寨币?_币盈网

就在昨天,跟往常一样,习惯性的登录P网看行情。却猛然发现页面右下角的“NOTICES”,多了一条公告。怕你看不清,所以我们翻墙去了P网的推特👇👇"2017年5月2日,以下的币种将下线:BBR,BITS,C2,CURE,HZ,IOC,MYR,NOBL,NSR,QBK,QORA,QTL,RBY,SDC,UNITY,VOX,XMG"也就是说,著名的加密货币交易所Poloniex(P网)将自5月2日起...

 

比特币区块链分裂之后,你的币怎么办?_币贝网

在过去的两个星期以来,比特币社区一直在讨论将来发生硬分叉的可能性。另外,很多业内交易所和比特币公司都开始为这一事件做准备。而比特币持有者抱有的疑问则在于:区块链分裂之后,他们的比特币是否安全以及他们应该如何应对这一情况。你的存币是安全的首先,所有比特币持有者都应该明白,尽管硬分叉可能分裂区块链,但你拥有的比特币是绝对安全的。在过去的一年时间里,出于政治原因,硬分叉可以说是臭名远扬。事实上,大部分分...

 

比特币——怎么知道自己买的比特币是真的?(001)_韩二俱乐部

这个问题估计有的人想过,有的人没有想过,像人民币在我们手里,我们可以用验钞机验证下,那我们花钱在交易平台上买了比特币了,到底是真是假呢?搞不清楚,下来我们一步步分析。这里提醒一点,好的问题胜过好的答案,好的创意,包括很多创业公司都是由一个好问题形成的。比特币为什么会诞生,比特币诞生为什么引起来了这么大效应以及产生了这么大的价值?为什么?可以从这个问题进行切入,因为它解决了最关键的两个问题:特点:1...

 

推荐阅读

热文推荐

公众号推荐

  • MYSBXHYXH

    绵阳市保险行业协会是依照国务院颁行的《社

  • 腾策顾问

    腾策顾问-以地产大数据、大咨询、大设计为

  • 有股票

    有股票:提供股票价值挖掘,盘面趋势分析,

x

好的内容,值得赞赏

x

请使用微信支付

x

请使用微信扫码解锁全文

×

举报

如有疑问请致电 0755-83336818