#教程#TAD教你一天内自建虚拟货币

本文阅读 7 分钟

马上要过年了,这里整理了一些资料,重写一个自建虚拟货币教程当作提前拜年礼物,让你也能在不到一天的时间内,自建虚拟币,。

请输入图片描述
2017年度,比特币一定能列在最热关键词。去年由于国内局势,你懂得比特币呈现规律性大涨。很多新人都加入虚拟货币市场。当然也有很多人浑水摸鱼,扰乱市场。再次声明:虚拟货币不具有一般等价物的特征、功能,入坑需谨慎!

你需要做的事就是,部署cryptonote,自己搭建一个虚拟货币官网(可以参考知名网站,例如全球傻逼链平台),当然白皮书也必不可少。淘宝上甚至还有代写白皮书服务。

准备事项
1.新建一个github账号,(当然能看到此处的大部分都有github帐号,就不需要注册了)。
2.fork cryptonote的源码,点击这里。
3.购买独立服务器(一到两台,Ubuntu系统)作为节点,至少需要2G的内存(online的特价独服就是不错的选择,vps也ok,不过我并未试过)。

命名货币
1.无论是哪个虚拟货币,一个独一无二的名字才算是一个好名字。例如傻逼链之类,保证缩写尽量不要重复。
2.将你的虚拟币名字加入到你fork的源码中,以下假设sbcoin为虚拟货币的名字。
(1)在src/CryptoNoteConfig.h中的CRYPTONOTE_NAME 你需要将sbcoin填入冒号之间,如下:

const char CRYPTONOTE_NAME[] = "sbcoin";
(2)在src/CMakeList.txt中的set_property(TARGET daemon PROPERTY OUTPUT_NAME"") 你需要将sbcoin填入冒号之间,如下:

set_property(TARGET daemon PROPERTY OUTPUT_NAME "sbcoin")
(3)当然最重要的还是,将你fork的repository名字给改过来。

货币发行政策
1.货币发行量
作为一个虚拟货币,提前规定发行总量是必要的。你可以使用(uint64_t)(-1)来设置(一共有18446744073709551616个),也可以直接设置一个数字,比如UINT64_C(86868600000000)这样。以(uint64_t)(-1)为例,在src/CryptoNoteConfig.h中修改为:

const uint64_t MONEY_SUPPLY = (uint64_t)(-1);
2.货币发行曲线
cryptonote默认的策略是随着发行量的增加,每个区块的奖励都会有轻微的减少,而不是像比特币那样每四年减半。EMISSION_SPEED_FACTOR这个参数是用来定义发行曲线的,也就是计算区块奖励。 以18这一较平均的数为例,在src/CryptoNoteConfig.h中修改为:

const unsigned EMISSION_SPEED_FACTOR = 18;
3.目标难度
目标难度这一概念简单来说就是区块之间的理想时间间隔,一旦区块之间的平均时间小于目标难度,那么整体的难度就将上升。目标难度是以秒为计算单位。
目标难度会对虚拟货币造成以下的表现:
(1)交易处理速度:区块之间的时间越长,事务确认越慢。
(2)发行速度:区块之间的时间越长,发行速度越慢。
(3)孤立率:更快的区块链将产生更高的独立率。
常见的目标难度在60-120秒之间,以60为例,在src/CryptoNoteConfig.h中修改为:

const uint64_t DIFFICULTY_TARGET = 60;
4.区块奖励公式
如果你不满意官方默认的区块奖励方式,你也可以随意改变它。具体的方法在src/CryptoNoteCore/Currency.cpp中:
bool Currency::getBlockReward(size_t medianSize, size_t currentBlockSize, uint64_t alreadyGeneratedCoins, uint64_t fee, uint64_t& reward, int64_t& emissionChange) const
此功能由两个部分组成:
(1)基础区块奖励
uint64_t baseReward = (m_moneySupply - alreadyGeneratedCoins) >> m_emissionSpeedFactor;
基础区块奖励将会直接影响货币发行曲线
(2)大区块惩罚计算
为了同时保护链不被泛滥交易攻击和提供有机网络增长,故设置了大区块惩罚计算。

货币的发行计算
通过更改DIFFICULTY_TARGET和EMISSION_SPEED_FACTOR这两个参数,可以将虚拟货币的发行和比特就进行对比。比如,将DIFFICULTY_TARGET设置为21,将EMISSION_SPEED_FACTOR设置为120得到下图:
请输入图片描述
网络设置

1.P2P和RPC网络的端口
P2P端口被用来和其他设备进行互相通信,钱包和其他软件则使用RPC端口进行通信。建议使用不常用的端口赋给P2P和RPC,以避免出现端口占用的问题。常见端口请参阅speedguide.net,networksorcery.com和keir.net。以17236和18236为例,在src/CryptoNoteConfig.h中修改为:

const int P2P_DEFAULT_PORT = 17236;
const int RPC_DEFAULT_PORT = 18236;
2.网络身份认证
利用网络身份认证以避免多个虚拟货币的流量混淆,将在src/P2p/P2pNetworks.h中下列的参数改为随机数值:

const static boost::uuids::uuid CRYPTONOTE_NETWORK = { { 0xA1, 0x1A, 0xA1, 0x1A, 0xA1, 0x0A, 0xA1, 0x0A, 0xA0, 0x1A, 0xA0, 0x1A, 0xA0, 0x1A, 0xA1, 0x1A } };
3.种子节点
将服务器的IP地址添加到src/CryptoNoteConfig.h中的下列参数中,以8.8.8.8:17236和4.4.4.4:17236为例:

const std::initializer_list SEED_NODES = {
"8.8.8.8:17236",
"4.4.4.4:17236",
};
交易费用及相关参数
1.最低交易费用
最低交易费用为零可能会导致交易泛滥,一般minimum_fee 100000是比较合适的。以100000为例,在src/CryptoNoteConfig.h中更改:

const uint64_t MINIMUM_FEE = 100000;
2.处罚自由区块
通过减少大于中等区块的区块奖励来保护链收到tx flooding影响,参数需要大于RYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE。以20000为例,在src/CryptoNoteConfig.h中更改:

const size_t CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE = 20000;
地址前缀
选择一个或几个字母以作为所有的货币公共地址的前缀。由于地址前缀规则是独有的,所以需要使用前缀生成器工具。点击这里查看。以0xe9为例,设置如下:

const uint64_t CRYPTONOTE_PUBLIC_ADDRESS_BASE58_PREFIX = 0xe9; // 地址以"f"作为前缀。
起始区块
1.用一个空的源代码生成十六进制二进制文件。
在src/CryptoNoteConfig.h中的GENESIS不填写任何参数,如下:

const char GENESIS_COINBASE_TX_HEX[] = "";
2.启动守护进程以产出起始区块
通过添加--print-genesis-tx,产出起始区块的交易hash值,如下:
furiouscoind --print-genesis-tx
3.加入交易hash值
复制hash值到src/CryptoNoteConfig.h中GENESIS_COINBASE_TX_HEX,以013c01ff0001ffff...785a33d9ebdba68b0为例:
const char GENESIS_COINBASE_TX_HEX[] = "013c01ff0001ffff...785a33d9ebdba68b0";
4.重新编译的二进制文件
将所有的文件重新编译一遍,完成后你的虚拟货币就开始了!

本文基于cryptonote由Tad做简易整理,完整代码请参阅github。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
申请斯坦福大学校友邮箱—校友edu邮箱申请
« 上一篇 09-03
namecheap九类域名转移,3.98刀一个,能转25个!活动时间2018.3.6 13:00
下一篇 » 03-01

发表评论

发表评论

热门文章

标签TAG

热评文章

最近回复

Stuartitask
5月7日

Для пользователей, которым важна конфиденциальность, KRAKEN предлагает безопасную платформу, которая гарантирует protection данных и анонимность во время transactions. Площадка работает на передовых технологиях, обеспечивающих высокую степень безопасности. Все payments проводятся через защищённые каналы, что исключает вероятность утечек аккаунтов. KRAKEN предоставляет удобные зеркала для доступа, которые автоматически обновляются, что позволяет всегда оставаться на связи, даже если основной platform временно недоступен. Платформа гарантирует maximum анонимность при входе, используя complex систему безопасности. Интерфейс сайта максимально simple, что делает его доступным для пользователей с разным уровнем подготовки. KRAKEN активно работает с respected продавцами и предоставляет пользователям качественные товары с гарантией безопасности сделок.
kraken darknet

Node-Media-Server:国人开发-简易流媒体服务