3

如何仿照比特币创造自己的山寨币(一)

 2 years ago
source link: https://shusunny.github.io/2016/04/How-to-make-altcoin-1/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
2016-04-13 • bitcoin C++

如何仿照比特币创造自己的山寨币(一)

最近在做一些比特币的工作,记录自己的工作的同时,也希望顺便科普一下比特币和各种各样的山寨币。

首先,本文介绍的方法仅供技术讨论,不适用于任何商业行为,本人对任何用于商业行为可能出现的情况概不负责。 其次是通过创造电子货币从而获得大量利润的方法很难实现,货币的升值需要大量的信用进行支持。 再次文章中包含大量的代码,并且需要一定的C++知识和ubuntu命令行操作基础。如果你强行想用windows进行编译,我只能在这里祝你好运了。

现在让我们进入正题

如何创造像比特币一样的属于自己的电子币

本文参考How to make an altcoin

得到源代码

首先,进行ubuntu的命令行模式,创建我们的工作目录,你可以放在任何地方。

mkdir src
cd src

下一步我们需要bitcoin的代码。可以到这里https://bitcoin.org/en/version-history 选择版本和对应的操作系统进行下载。其实哪个版本不太重要,因为其中的代码大同小异。但请注意一定要下载源代码,不是QT客户端。

当然也可以使用git命令下载源码,但是git源得到的文件可能和旧版本的文件不太一样,但主要的参数还是差不多的。

git clone https://github.com/bitcoin/bitcoin.git

如果下载的是tar.gz文件,我们需要对其进行解压。我们这里得到的是0.10.2的版本,请根据自己的版本号进行调整。

cd ~/Downloads
tar -zxvf bitcoin-0.10.2.tar.gz
cp -r bitcoin-0.10.2 ~/src/bitcoin
cp -r bitcoin-0.10.2 ~/src/newcoin
cd ~/src

这样,我们就在工作目录下得到了两个文件夹,bitcoin和他的山寨备份newcoin。你也可以把newcoin变成任何你想要的名字。

创建环境并编译比特币

比特币的编译需要一定的环境要求,我们先创建环境以包证我们的山寨币也可以编译。

su
echo 'deb-src ftp://ftp.us.debian.org/debian/ sid main contrib non-free' >> /etc/apt/sources.list
apt-get update
apt-get build-dep bitcoin
apt-get –install-recommends install libbitcoin-dev
exit

上面的代码稍稍有些作弊地使用了debian的源,如果出现版本号不一致的情况并导致下面的编译无法进行, 请参考http://fengmm521.blog.163.com/blog/static/2509135820142154251413/ 自行安装相应的库。

下面我们进行编译

cd bitcoin
aclocal
automake --add-missing
./configure --with-incompatible-bdb
make

视电脑的运算速度大概需要几分钟到半小时不等的时间,编译成功后,我们可以用以下代码查询是否成功编译出了主要文件,如果其中出现了问题,一般都是由于库没有安装完全或版本不一致的情况,请参考上面分享的文章进行排查。

ls src/bitcoind
ls src/bitcoin-cli
ls src/qt/bitcoin-qt

如果存在,那么恭喜你,你已经可以用bitcoin-qt文件进行比特币的操作并挖矿了。使用命令cd src/qt;sudo ./bitcoin-qt

而不甘心于此的高玩可以进行继续进行下面的工作。

即然是新的电子币,那么里面的所有文件现在者需要一个新的名字了,我们仍以newcoin为例

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进行替换,后两行将文件名替换为我们的新名字。

这里注意,由于比特币客户端多语言环境的问题,上面的命令可能会造成一些拼写和其他语言没有被更改的问题。需要做其他语言的替换请进入代码内部进行修改。我们这里不再详细说明。

下面我们更改客户端使用的端口号

find . -type f -print0 | xargs -0 sed -i 's/8332/9443/' {} ";"
find . -type f -print0 | xargs -0 sed -i 's/8333/9444/' {} ";"

这样就将原来的8332及种子的8333端口号变成了9443和9444,以免发生冲突。

下面需要设计自己的logo,从而让我们的newcoin焕然一新。qt客户端的图片文件主要存放在src/qt/res中。将其中的图片文件按照原来的像素大小一一替换掉即可。

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

aclocal
automake --add-missing
./configure --with-incompatible-bdb
make

如果编译成功即可以找到newcoin-qt,newcoind,newcoin-cli,说明我们上面的改动没有改变基础文件,非常成功。如果编译出现问题,你已经成功编译了比特币客户端了,请参照bitcoin客户端的编译方法进行逐一排查。

这里先不要运行,因为我们虽然变了名字,但内核还是比特币,属于换汤不换药,所以我们需要将参数改掉以后才能正式创造我们的newcoin。 我们将在下一篇文章中详细介绍有关内核参数的更改。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK