为什么比特币交易系统源码使用输入/输出系统

比特币交易源代码分析_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
比特币交易源代码分析
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩41页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言) | 巴比特
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)
(原理部分请参考:《)
依赖库:openssl-1.01h ,参考文档:
为降低代码复杂度,本文借助了openssl库来实现大整数(BIGNUM)的运算、伪随机数的生成、HASH算法、密钥生成以及数字签名。
比特币系统中的整数字节顺序:(首先要搞清楚字节次序,看bitcoin-qt源码时会有一定帮助)
大整数(超过64位的)使用big endian编码,如HASH值。
64位及以下的变长整数使用little endian编码,如Varint, Compact Integer等。
64位及以下的常规整数使用系统内定的编码。如int64_t, itn32_t等。
一、 哈希函数:
目前bitcoin-qt中的使用的HASH函数主要是Hash256和Hash160。(代码中预留了Hash512,但未使用)
Hash256是对原始数据进行两次SHA256操作,生成一个256位(bit)的HASH结果。应用场合:block_header, 交易(Transactions),base58check校验等。
Hash160是对原始数据先进性一次SHA256操作,再对生成的hash值进行RIPEMD160操作,生成一个160位(bit)的HASH结果。应用场合:bitcoin地址。
示例代码:
#define HASH256_SIZE (32)
#define HASH160_SIZE (20)
size_t Hash256(const unsigned char * begin, size_t size, unsigned char to[])
unsigned char hash[HASH256_SIZE];
if(NULL == begin || size == 0) return 0;
SHA256(begin, size, (unsigned char *)&hash[0]);
SHA256(&hash[0], sizeof hash, (unsigned char *)&to[0]);
return HASH256_SIZE;
size_t Hash160(const unsigned char * begin, size_t size, unsigned char to[])
unsigned char hash[HASH256_SIZE];
if(NULL == begin || size == 0) return 0;
SHA256(begin, size, (unsigned char *)&hash[0]);
RIPEMD160(&hash[0], sizeof hash, &to[0]);
return HASH160_SIZE;
二、 Base58编码
编码特点:输出结果为不容易混淆的字母和数字,便于鼠标操作(用鼠标双击即可选取完整的文本)。
应用场合:Bitcoin的地址、私钥导出。
编码步骤:
将原始数据看作一个大整数 E
(1) r = E mod 58
(2) 将r附加到输出缓冲区,
(3) E = E / 58, 若E ≠ 0,则返回(1)
(4) 检查原始数据是否有前导的’0’,如有,则将base58编码的0添加到输出缓冲区中
(5) 字符串反转(转换成big endian的格式)
示例代码:
static const char* pszBase58 = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
size_t Base58Encode(const unsigned char *begin, size_t size, char *to)
size_t cb = 0;
BN_CTX * ctx = NULL;
unsigned char *pzero = (unsigned char *)
unsigned char *pend = (unsigned char *)(begin + size);
// bool fSign = 0;
BIGNUM bn, dv, rem, bn58, bn0;
if((NULL == begin) || (size == 0)) return 0; // invalid parameter
cb = size * 138 /100+1; // the size of output will less than (138/100 * sizeof(src))
//** output buffer should be allocated enough memory
if(NULL == to)
BN_init(&bn58); BN_init(&bn0);
BN_set_word(&bn58, 58);
BN_zero(&bn0);
BN_init(&bn); BN_init(&dv); BN_init(&rem);
BN_bin2bn(begin, size, &bn);
ctx = BN_CTX_new();
if(NULL==ctx) return 0;
// 前面的都是初始化工作,下面是正式的算法
while(BN_cmp(&bn, &bn0) & 0)
if(!BN_div(&dv, &rem, &bn, &bn58, ctx))
c = BN_get_word(&rem);
*(p++) = pszBase58[c];
// 添加前导的0
while(*(pzero++)==0)
*(p++) = pszBase58[0];
if(pzero & pend)
ReverseBytes((unsigned char *)to, cb); // output as a big endian integer
BN_CTX_free(ctx);
解码步骤:
static const int8_t b58digits[] = {
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8,-1,-1,-1,-1,-1,-1,
-1, 9,10,11,12,13,14,15, 16,-1,17,18,19,20,21,-1,
22,23,24,25,26,27,28,29, 30,31,32,-1,-1,-1,-1,-1,
-1,33,34,35,36,37,38,39, 40,41,42,43,-1,44,45,46,
47,48,49,50,51,52,53,54, 55,56,57,-1,-1,-1,-1,-1,
size_t Base58Decode(const char *begin, size_t size, unsigned char *to)
unsigned char *p = (unsigned char *)
unsigned char *pend = p +
BIGNUM bn,
BIGNUM bn58, bn0;
BN_CTX *ctx = BN_CTX_new();
if(NULL == ctx) return 0;
BN_init(&bn58);
BN_init(&bn0);
BN_init(&bn); BN_init(&bnchar);
BN_set_word(&bn58, 58);
BN_zero(&bn0);
while(p & pend)
if(c & 0x80) goto label_
if(-1 == b58digits[c]) goto label_
BN_set_word(&bnchar, b58digits[c]);
if(!BN_mul(&bn, &bn, &bn58, ctx)) goto label_
BN_add(&bn, &bn, &bnchar);
cb = BN_num_bytes(&bn);
if(NULL == to)
BN_bn2bin(&bn, to);
BN_CTX_free(ctx);
label_errexit:
if(NULL != ctx) BN_CTX_free(ctx);
三、 私钥生成
比特币系统中的私钥是一个256位(bits)的随机整数。
取值范围在[1,n-1]之间,其中,
n (order) = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
生成步骤:
1、初始化伪随机数种子
2、生成一个256位的随机数
3、验证随机数范围是否在[1,n-1],如超出范围,则返回2
示例代码:
BOOL ECKey_Check(const unsigned char vch[32]);
uint32_t ECKey_GeneratePrivKey(EC_KEY * pkey, unsigned char vch[32])
RandAndSeed(); // 初始化随机数种子,具体实现请参考附件中的源文件,或bitcoin-qt的源码
RAND_bytes(vch, 32); // 利用openssl库生成一个256位的随机数
}while(!ECKey_Check(vch)); // 检查取值范围是否合法
if(pkey != NULL) return ECKey_GenKeypair(pkey, vch); // 生成密钥对
return 32; // 私钥的字节数
BOOL ECKey_Check(const unsigned char vch[32])
static const unsigned char order[32] = {
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,
0xBF,0xD2,0x5E,0x8C,0xD0,0x36,0x41,0x40
BIGNUM // 私钥
BIGNUM bnO // G在Fp下的序号order
BIGNUM bn0; // 0
BN_init(&bn);
BN_init(&bnOrder);
BN_init(&bn0);
BN_zero(&bn0);
BN_bin2bn(vch, 32, &bn); //将二进制序列转化为一个大整数
BN_bin2bn(order, 32, &bnOrder);
//** 0 & [私钥] & order
if(BN_is_zero(&bn)) return 0; // 私钥不能为0
if(BN_cmp(&bn, &bnOrder) & 0) return 0; //私钥必须小于order
四、公钥的生成
公钥的计算公式:Q = dG
G: 椭圆曲线基点
//** 初始化EC_KEY,告知openssl库将使用secp256k1椭圆曲线。
EC_KEY * ECKey_new()
return EC_KEY_new_by_curve_name(NID_secp256k1);
uint32_t ECKey_GenKeypair(EC_KEY * pkey, unsigned char vch[HASH256_SIZE])
//** pkey = ECKey_new();
const uint32_t key_size = HASH256_SIZE;
const EC_GROUP *
BIGNUM * privkey = &
BN_CTX * ctx = NULL;
EC_POINT * pubkey = NULL;
if(NULL == pkey) return 0;
BN_init(&bn); // BIGNUM使用前最好先初始化,否则windows + mingw环境下有时会出错
group = EC_KEY_get0_group(pkey); // group结构体中存储了G值和运算规则
pubkey = EC_POINT_new(group); // 给pubkey分配内存,pubkey为曲线上的一个点
ctx = BN_CTX_new();
if(NULL == pubkey || NULL == ctx) goto label_
if(BN_bin2bn(vch, key_size, &bn)) // 将私钥(二进制形式)转化为一个大整数
if(EC_POINT_mul(group, pubkey, privkey, NULL, NULL, ctx)) // pubkey =privkey*G
// 将密钥存储于EC_KEY结构体中,便于导出为所需的格式
EC_KEY_set_private_key(pkey, privkey);
EC_KEY_set_public_key(pkey, pubkey);
BN_clear_free(&bn);
EC_POINT_free(pubkey);
BN_CTX_free(ctx);
return key_
label_errexit:
if(NULL!=pubkey) EC_POINT_free(pubkey);
if(NULL != ctx) BN_CTX_free(ctx);
公钥提取:
uint32_t ECKey_GetPubkey(EC_KEY * pkey, unsigned char * pubkey, BOOL fCompressed)
unsigned char * p_pubkey =
EC_KEY_set_conv_form(pkey, fCompressed?POINT_CONVERSION_COMPRESSED:POINT_CONVERSION_UNCOMPRESSED); // 公钥采用压缩还是非压缩格式输出
cb = i2o_ECPublicKey(pkey, NULL);
if(0==cb || cb&65) return 0;
if(NULL == pubkey)
// 此处不要直接用pubkey,openssl库会自动修改传递进去的指针
cb = i2o_ECPublicKey(pkey, &p_pubkey);
五、 比特币地址的生成和私钥的导出
比特币地址的生成:
1、H0 = Hash160(公钥)
2、在H0前添加版本号: 0×00,
–& extH0
3、生成校验值H1 = Hash256(extH0)
4、将H1的前四个字节 复制到extH0之后, ext_pubkey ={0×0, H0, &first 4 bytes of H1&};
5、对ext_pubkey进行base58编码,输出的结果即为比特币地址
//**************************************************
//** Base58check编码生成比特币地址
uint32_t PubkeyToAddr(const unsigned char * pubkey, size_t size, char *to)
unsigned char vch[20];
unsigned char checksum[4];
unsigned char hash[32]={0};
printf("ext_pubkey size: %d\n", sizeof(ext_pubkey));
ext_pubkey.version = 0x00;
Hash160(pubkey, size, &ext_pubkey.vch[0]);
Hash256(&ext_pubkey.version, 1+20, hash);
memcpy(ext_pubkey.checksum, hash, 4);
return Base58Encode((unsigned char *)&ext_pubkey.version, sizeof(ext_pubkey), to);
私钥导出格式:
1、将私钥转化为256位的二进制格式V
2、在V前添加版本号: 0×80, (如果使用压缩标志,则在V后再添加一个0×01),–&extV
3、生成校验值H1 = Hash256(extV)
4、将H1的前四个字节 复制到extV之后, ext_privkey ={0×80, V, (0×01), &first 4 bytes of H1&};
5、对ext_privkey进行base58编码,输出的结果即为比特币地址
uint32_t PrivkeyToWIF(const unsigned char vch[HASH256_SIZE], char *to, BOOL fCompressed)
unsigned char vch[HASH256_SIZE];
unsigned char checksum[5];
unsigned char hash[HASH256_SIZE];
uint32_t offset = fCompressed?1:0;
ext_privkey.version = 0x80;
memcpy(ext_privkey.vch, vch, 32);
if(offset) ext_privkey.checksum[0] = 0x01;
Hash256(&ext_privkey.version, 1 + HASH256_SIZE +offset, hash);
memcpy(&ext_privkey.checksum[offset], hash, 4 );
return Base58Encode(&ext_privkey.version, 1 + HASH256_SIZE + offset + 4, to);
六、签名和验证
签名步骤:
1、H = Hash256(M)
2、调用openssl的ECDSA_do_sign函数,生成签名sig = (r,s)。
3、检查s值是否大于order/2,如果大于,则利用 s + (-s) = order, -s = order –s, 这一性质将签名改写为(r, -s)的形式。这两种形式的签名是等效的,但如果s & order/2,由于验证方的实现方式不可预知,验证方有可能将其视为一个更大的正整数而不是-s,这会导致签名验证失败。
size_t ECKey_Sign(EC_KEY *pkey, const unsigned char hash[HASH256_SIZE], unsigned char **to)
//** if (*to) == NULL, the caller should use OPENSSL_free(*to) to free the memory
size_t cb = 0;
ECDSA_SIG *sig = NULL;
BN_CTX * ctx = NULL;
BIGNUM // The order of G
BIGNUM // get sign/unsign mark
unsigned char *output = NULL;
const EC_GROUP * group = EC_KEY_get0_group(pkey); // secp256k1: G
if(NULL == group) return 0;
sig = ECDSA_do_sign((unsigned char *)&hash[0], HASH256_SIZE, pkey);
if(NULL == sig) return 0;
//** sig = (r,s) = (r,-s)
//** s must less than order/2, otherwise, some app may parse '-s' as a large unsigned positive integer
ctx = BN_CTX_new();
if(NULL == ctx) goto label_
//** allocate memory for bignum
BN_init(&order);
BN_init(&halforder);
// get the order of G
EC_GROUP_get_order(group, &order, ctx); // secp256k1: n
BN_rshift1(&halforder, &order);
if(BN_cmp(sig-&s, &halforder)&0)
// if s & order/2, then output -s. (-s = (order - s))
BN_sub(sig-&s, &order, sig-&s);
BN_CTX_free(ctx);
output = *
cb = ECDSA_size(pkey);
if(NULL == output)
output = (unsigned char *)OPENSSL_malloc(cb);
if(NULL == output) goto label_
if(NULL == *to) *to =
//** i2d_ECDSA_SIG DER encode content of ECDSA_SIG object
//** (note: this function modifies *pp (*pp += length of the DER encoded signature)).
//** do not pass the address of 'to' directly
cb = i2d_ECDSA_SIG(sig, &output);
label_exit:
ECDSA_SIG_free(sig);
验证签名:
BOOL ECKey_Verify(EC_KEY *pkey, const unsigned char hash[HASH256_SIZE], const unsigned char *sig, size_t size)
if(ECDSA_verify(0, (unsigned char *)&hash[0], HASH256_SIZE, sig, size, pkey) != 1) // -1 = error, 0 = bad sig, 1 = good
return FALSE;
return TRUE;
3. VS6下需要下载gnu兼容的
BTC addr:1ChEiWRkJJMBZVQojqjvW5fTB7hhUng129
版权声明:
作者保留权利。文章为作者独立观点,不代表巴比特立场。
您需要登录后才可以回复
c332ed8acf910cf6230fe1
回复@羽毛币李志:[呵呵]
回复@羽毛币李志:
@吾谓话剧社 您好!来自【微问】的网友向您请教院校信息方面的问题:“南京财经大学2014年在新疆这里招生吗”『分享知识和经验来帮助TA,请点击
』回答还能攒积分换礼品,iPad在向你招手!不愿收到求助信息请点击http://t.cn/8F4Kgad
很好的代码剖析
书读百遍,其义自见。。。虽然基础不好,但多花点时间,闲下来多看看,总是有收货的。互联网的分享精神真棒!哈哈。。。没准哪天我也是码农了呢?
[花心]//@bitPaul: [好喜欢]好东西。
//@bitPaul: [好喜欢]好东西。
牛//@bitPaul:[好喜欢]好东西。
[好喜欢]好东西。
[c得瑟]韩版[ali扑]格子欧根纱中长半身裙a字高腰裙季式长裙http://t.cn/RvXylYW
又不是你学校….
《比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)》http://t.cn/RvaWcyL 为降低代码复杂度,本文借助了openssl库来实现。一、 哈希函数;二、 Base58编码;三、 私钥生成;四、公钥的生成;五、 地址的生成和私钥的导出;六、签名和验证 @chehw_1 [汗]大神!!
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言):
(《第三部分:交易细节》稍后再发,正在测试代码ing……)&p&&/p&&img src=&/v2-44d8c388ceb9166cdd710_b.jpg& data-caption=&& data-rawwidth=&902& data-rawheight=&661& class=&origin_image zh-lightbox-thumb& width=&902& data-original=&/v2-44d8c388ceb9166cdd710_r.jpg&&&p&在36氪创投助手(现在叫鲸准)上搜索“区块链”,一共查到414家相关创业公司。当然,这并不是全部数据,截至今年9月,全球大概有1300家区块链创业公司先后设立,主要集中在美国、欧洲及中国等少数国度地域。中国专注于区块链的公司不在少数,多集中在北京、上海、杭州、广州、深圳等地。下文我例举国内的一些做得还不错的企业,供大家参考。&/p&&p&&br&&/p&&p&(排名不分先后,信息来自于公司官网、相关媒体报道)&/p&&p&&br&&/p&&p&&b&1) 杭州复杂美科技有限公司&/b&&/p&&p&【引领区块链技术创新 推进区块链产业开展】&/p&&p&&a href=&///?target=https%3A///%23/index& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/#&/span&&span class=&invisible&&/index&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&杭州复杂美科技有限公司成立于2008年,掌握着撮合交易系统低延时、高并发的核心技术,自2013年启动区块链、智能合约的研发与创新,目前已申请近30项区块链核心技术发明专利,并拥有多家世界500强企业落地案例。日“复杂美区块链供应链金融服务平台”成为首批通过可信区块链预测试产品。&/p&&p&&br&&/p&&p&&b&2) 云象区块链 【让一切变得透明可信】&/b&&/p&&p&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&云象区块链是国际知名开源区块链项目Hyperledger成员,旨在打造全球抢先的企业级区块链技术效劳平台;已发布的云象BaaS平台在性能、平安、隐私、接口丰厚性等方面已处于国际抢先,并已申请超越30项国度创造专利;效劳范畴包括金融、供给链、不动产注销、征信等。云象依托浙江大学与新加坡国立大学,在两地分别设立区块链结合实验室。&/p&&p&&br&&/p&&p&&b&3) 布比(北京)网络技术有限公司&/b&&/p&&p&【让数字资产自在活动起来】&/p&&p&&a href=&///?target=http%3A///index& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/index&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&专注于区块链技术和产品的创新,已具有数十项中心专利技术,独立自主开发了高可扩展性高性能的区块链根底效劳平台,具备快速构建上层应用业务的才能,满足亿级用户范围的场景。&/p&&p&布比区块链曾经普遍应用于数字资产、股权债券、贸易金融、供给链溯源、商业积分、结合征信、公示公证、数据平安等范畴,并正在与买卖所、银行等主流金融机构展开应用实验和测试,以多中心化信任为中心,努力于打造新一代价值流通网络,让数字资产都自在活动起来。&/p&&p&&br&&/p&&p&&b&4) 公信宝【去中心化数据买卖所】&/b&&/p&&p&&a href=&///?target=https%3A//www.gxb.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&gxb.io/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&公信宝(杭州存信数据科技有限公司)成立于2016年,是一家基于区块链技术的去中心化数据买卖所,适用于各行各业的数据交流。公信宝数据买卖所具有不缓存数据、维护个人隐私、数据版权维护、数据新颖度高、打击造假以及能够设置匿名买卖等特性。面向的典型客户为互联网金融范畴的网络贷款、汽车金融、消费金融、银行等企业以及有数据交流需求的政府部门、保险、医疗、物流等政企部门,以去中心化思想处理了各个行业的共享数据交流问题。&/p&&p&&br&&/p&&p&&b&5) 唐盛链【基于区块链技术的资产数字化平台】&/b&&/p&&p&&a href=&///?target=https%3A///zh/%23service& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/zh/#&/span&&span class=&invisible&&service&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&唐盛物联是一家从事区块链自主学问产权研讨、专注于区块链技术应用开发及资产数字化的科技公司。“唐盛链”是应用双中心币机制完成公私链交融的区块链底层框架,是公司投入大量研讨经费,经过长期科技攻关收获的研发成果,具有自创共识机制(GEAR)、应用场景交融(公链、私链、联盟链应用交融)、智能合约法律效能化等首创特性。公司开展至今,已在“唐盛链”的根底设备之上开发了“唐贝”、“唐宝”等优质项目,并完成了3000万天使轮融资。&/p&&p&&br&&/p&&p&&b&6) 杭州趣链科技有限公司 【趣赢信任 链铸将来】&/b&&/p&&p&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&成立于2016年,中心技术为自主可控的国产联盟链平台,并效劳于数字票据、数据买卖、股权债券、供给链金融、物流管理等众多范畴,公司努力于具有推翻性意义的区块链技术,具有十分抢先的技术价值和应用价值。构建下一代可信任价值交流网络中心技术及其平台(联盟链),并以此为依托,完成以金融业为中心的示范业务应用及通用行业处理计划。&/p&&p&&br&&/p&&p&&b&7) 钜真金融【为数据的活动提供管理】&/b&&/p&&p&&u&&a href=&///?target=http%3A//www.juzix.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&juzix.io/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/u&&/p&&p&矩阵元(Juzix),是全球散布式账本技术的指导厂商,努力于在数字化时期提供散布式数据交流及协同计算效劳。为数据的活动提供全方位的管理效劳,让数据交流与协同愈加简单、平安、高效。矩阵元金融努力于基于散布式账本技术带来的全新视野,为新一代金融根底设备提供技术视角的建造、运营与咨询效劳。&/p&&p&矩阵元技术基于完整自主开发的数据交流根底设备技术平台,集成了散布式账本、平安多方计算、可插拔密码学框架及面向将来的密码学算法与协议、软硬一体的处理计划。为金融、交通、物流、航空效劳、智能制造、物联网、安康医疗等范畴提供根底技术平台级效劳。与全球抢先的云平台全面协作,为面向散布式的行业应用提供完备的处理计划。&/p&&p&&br&&/p&&p&&b&8) 上海万向区块链股份公司【智链万物 信至行远】&/b&&/p&&p&&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&2015年开端,中国万向控股有限公司在区块链技术范畴开端了战略性规划。逐渐打造了集万向区块链实验室、万向区块链商业创新咨询、新链加速器、万云等业务于一体的区块链生态平台,从技术、资金、资源等多方面全力推进中国区块链的行业开展和业务落地。&/p&&p&&br&&/p&&p&&b&9) 太一云科技&/b&&/p&&p&&a href=&///?target=https%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&太一云科技依托自主学问产权和人才优势,积极展开多层面开放交融的区块链资源协作,坚持“开放、结合、融通”的产业协作理念。&/p&&p&太一云科技构建了自主学问产权的太一区块链应用体系,立志在中国区块链产业化进程中,为各个行业互联网应用层提供稳定的区块链根底设备、便利的中间工具和牢靠的处理计划。太一团队自2014年就开端投入研讨区块链,目前太一区块链系统已承载接近60到70万笔买卖。&/p&&p&&br&&/p&&p&&b&10) 北京瑞卓喜投科技开展有限公司【科技打造信任】&/b&&/p&&p&&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&成立于2015年,是业内抢先的区块链技术输出效劳商,也是首批经过工信部区块链规范测试的企业。Pre-A轮投资人为首家登陆美国纽约证券买卖所的中国房地产开发企业——鑫苑(中国)置业有限公司。运用区块链技术为客户提供商务处理计划,用科技打造信任,用区块链链接将来是瑞卓喜投的任务。在国内率先完成了区块链在房地产金融范畴的落地应用。公司与IBM展开深化的底层根底技术协作,与清华大学五道口金融学院协作成立研发中心,对区块链技术停止深化研讨,构建了自主学问产权的区块链应用体系,目前已申请专利36件,其中触及区块链底层技术的专利占比88.9%。&/p&&p&&br&&/p&&p&&b&11) 安链云-众安科技【聚焦金融和安康医疗的企业级云效劳】&/b&&/p&&p&&a href=&///?target=https%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&安链云(从属于众安信息技术效劳有限公司)。安链云包括基于区块链技术的BaaS效劳、基于人工智能技术的AIaaS效劳、平台保证等专业企业级云效劳,聚焦于金融和安康医疗范畴,为金融、安康医疗、分享经济、文化产业、慈悲事业、政务等多个范畴提供全面的行业处理计划。&/p&&p&&br&&/p&&p&&b&12) 区块宝【ICO,从这里开端】&/b&&/p&&p&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&国内首家ICO项目数据库及商业信息效劳商,平台于2017年7月全新改版上线,努力于协助用户快速发现值得投资的区块链资产,产品包括了ICO日历、ICO项目库、ICO资讯、ICO深扒、ICO研讨院五大板块内容。&/p&&p&垂直于全球ICO范畴,经过对海内外ICO项目停止“定性+定量”双重剖析,协助投资用户节约时间、进步效率,快速精准地停止各类商业行为,包括但不限于国内及跨境投资、收买、战略协作、竞品剖析、人才对接等。&/p&&p&&br&&/p&&p&&b&13) 北京比邻共赢信息技术有限公司(数贝荷包)&/b&&/p&&p&&a href=&///?target=http%3A///Regional_chain.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/Regional_cha&/span&&span class=&invisible&&in.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&比邻共赢 (Belink) 一家专注于资产数字化的金融信息效劳提供商,是国内首家与金融机构展开区块链应用协作并停止商业运营的科技公司。&/p&&p&“数贝荷包”是由比邻共赢与金融机构结合发起,努力于以区块链技术协助机构注销和发放非货币数字资产,并能经过社交网络传送和交流价值的数字资产管理平台。银行、保险等信誉机构经过“数贝荷包”平台能快速接入区块链,并以去中心化的方式集体维护和共享一个平安牢靠的数据库,在维护数据隐私的根底上,经过共享数据取得大数据运营的才能。&/p&&p&&br&&/p&&p&&b&14) 合链【打造基于区块链技术的生态系统】&/b&&/p&&p&&a href=&///?target=http%3A//www.& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&北京合链共赢科技有限公司(简称“合链科技”)以“推进科技开展,成就社会进步”为任务,努力于经过前沿信息技术的研发和应用理论,推进人类社会的开展。合链科技中心团队都来自于世界500强高科技企业,自2014年开端即从事区块链技术的研讨,目前曾经具备开发高性能、高可扩展性、高可控的区块链底层技术的才能,同时团队可以快速构建上层应用业务以满足大范围用户数量的多样化的商用业务场景。&/p&&p&&br&&/p&&p&&b&15) 艺链【打造基于区块链技术的生态系统】&/b&&/p&&p&&a href=&///?target=http%3A//www.allchain.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&allchain.org/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&艺链基于区块链技术,来构建艺术品资产数字化平台,努力于处理艺术品出处不明、真伪难辨、产权含糊及低流通性、高中介本钱的问题,搭建多元化的数字化艺术社区,重新定义艺术品数字经济属性,鼓吹普惠化的数字艺术理念。&/p&&p&&br&&/p&&p&&b&16) VeChain唯链 【全球抢先的区块链商品和信息平台】&/b&&/p&&p&&a href=&///?target=https%3A///%23/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/#&/span&&span class=&invisible&&/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&唯链(VeChain)努力于打造信息透明、协同高效、价值高速传输的可信任散布式商业环境。在过去两年的开展过程中,唯链(VeChain)阅历了技术的晋级换代、战略的适时调整、客户的不时扩容,在各行业中积聚了大量的区块链应用商业落地经历。&/p&
在36氪创投助手(现在叫鲸准)上搜索“区块链”,一共查到414家相关创业公司。当然,这并不是全部数据,截至今年9月,全球大概有1300家区块链创业公司先后设立,主要集中在美国、欧洲及中国等少数国度地域。中国专注于区块链的公司不在少数,多集中在北京、…
谢邀,国内研发区块链技术的公司其实不少,大部分“传统”的“比特币公司”其实都在研究,还有很多新兴的“区块链公司”如雨后春笋般冒出来。至于哪个更出名那就仁者见仁智者见智了。&br&&br&《&a href=&///?target=http%3A///blockchain-credit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&区块链:从数字货币到信用社会&i class=&icon-external&&&/i&&/a&》一书&a href=&///?target=http%3A///books/6/blockchain-credit/_book/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&附录&i class=&icon-external&&&/i&&/a&总结了国内的52个区块链项目,供参考,多图预警(手机用有道云笔记扫描的,点击大图凑合着看先):&br&&img src=&/0eb83cb6b4fb_b.jpg& data-rawwidth=&2769& data-rawheight=&1789& class=&origin_image zh-lightbox-thumb& width=&2769& data-original=&/0eb83cb6b4fb_r.jpg&&&img src=&/6e1bf163bc04270ccfc449f71ab61f8c_b.jpg& data-rawwidth=&1601& data-rawheight=&1088& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/6e1bf163bc04270ccfc449f71ab61f8c_r.jpg&&&img src=&/536c17b1bf68b0bbb7ac0f_b.jpg& data-rawwidth=&1601& data-rawheight=&1157& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/536c17b1bf68b0bbb7ac0f_r.jpg&&&img src=&/bcd5db5cbdb7f_b.jpg& data-rawwidth=&1601& data-rawheight=&1054& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/bcd5db5cbdb7f_r.jpg&&&img src=&/73b9b73bf1ac054a2190c2_b.jpg& data-rawwidth=&1601& data-rawheight=&1104& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/73b9b73bf1ac054a2190c2_r.jpg&&&img src=&/c_b.jpg& data-rawwidth=&1601& data-rawheight=&1073& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/c_r.jpg&&&img src=&/d533eecd002e662cda6fe_b.jpg& data-rawwidth=&1601& data-rawheight=&1106& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/d533eecd002e662cda6fe_r.jpg&&&img src=&/64d51c7e7a10f176404cc_b.jpg& data-rawwidth=&1601& data-rawheight=&1074& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/64d51c7e7a10f176404cc_r.jpg&&&img src=&/32c39a29ca158f1489fba9beecfeb1f5_b.jpg& data-rawwidth=&1601& data-rawheight=&1116& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/32c39a29ca158f1489fba9beecfeb1f5_r.jpg&&&img src=&/bb6b54f1e9_b.jpg& data-rawwidth=&1600& data-rawheight=&1140& class=&origin_image zh-lightbox-thumb& width=&1600& data-original=&/bb6b54f1e9_r.jpg&&&img src=&/e043d2aed1f67_b.jpg& data-rawwidth=&1601& data-rawheight=&1082& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/e043d2aed1f67_r.jpg&&&img src=&/650d502f14abf92f86dc8c_b.jpg& data-rawwidth=&1601& data-rawheight=&1045& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/650d502f14abf92f86dc8c_r.jpg&&&img src=&/8fc8e3a523f28dc5d9afca836c320a5b_b.jpg& data-rawwidth=&1601& data-rawheight=&801& class=&origin_image zh-lightbox-thumb& width=&1601& data-original=&/8fc8e3a523f28dc5d9afca836c320a5b_r.jpg&&
谢邀,国内研发区块链技术的公司其实不少,大部分“传统”的“比特币公司”其实都在研究,还有很多新兴的“区块链公司”如雨后春笋般冒出来。至于哪个更出名那就仁者见仁智者见智了。 《》一书总结了国内的52个区块链项目…
&img src=&/50/v2-37acb5f6b1691_b.jpg& data-rawwidth=&1920& data-rawheight=&1200& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/50/v2-37acb5f6b1691_r.jpg&&&p&原文:&a href=&/?target=https%3A//medium.freecodecamp.org/how-does-blockchain-really-work-i-built-an-app-to-show-you-6b70cd4caf7d& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How does blockchain really work? I built an app to show you.&i class=&icon-external&&&/i&&/a&&br&作者:&a href=&/?target=https%3A//medium.freecodecamp.org/%40seanseany%3Fsource%3Dpost_header_lockup& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sean Han&i class=&icon-external&&&/i&&/a&&br&译者:JeLewine&/p&&p&&br&&/p&&p&根据维基百科,区块链是:&/p&&blockquote&一个用于维护不断增长的记录列表的分布式数据库,我们称之为区块链。&/blockquote&&p&这听起来很棒,那它是如何工作的呢?&/p&&p&为了说明区块链,我们将会使用一个名为Blockchain CLI的开源命令行工具。&/p&&p&我同时也建立了一个&a href=&/?target=http%3A//blockchaindemo.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于浏览器的版本&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&img data-rawheight=&583& src=&/v2-a925f216b7a0ac5bc772e_b.png& data-rawwidth=&800& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/v2-a925f216b7a0ac5bc772e_r.png&&&p&&br&&/p&&h2&&b&安装命令行工具&/b&&/h2&&p&在此之前请先安装&a href=&/?target=https%3A//nodejs.org/download/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Node.js&i class=&icon-external&&&/i&&/a&&/p&&p&然后在你的命令行中运行以下指令:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&npm&/span& &span class=&nx&&install&/span& &span class=&nx&&blockchain&/span&&span class=&o&&-&/span&&span class=&nx&&cli&/span& &span class=&o&&-&/span&&span class=&nx&&g&/span&
&span class=&nx&&blockchain&/span&
&/code&&/pre&&/div&&p&你应该会看到&i&
Welcome to Blockchain CLI&/i&!和一&i&个blockchain &/i&→提示。这说明已经准备好了。&/p&&h2&&b&区块长什么样?&/b&&/h2&&p&想要查看当前的区块链,你需要在命令提示行下输入&i&blockchain&/i&或者&i&bc&/i&。你应该会看到像下面的图片一样的一个区块。&/p&&img data-rawheight=&420& src=&/v2-0850dca72e59fca676d8_b.png& data-rawwidth=&616& class=&origin_image zh-lightbox-thumb& width=&616& data-original=&/v2-0850dca72e59fca676d8_r.png&&&p&&br&&/p&&p&区块链上的一个区块&/p&&ul&&li&Index:是哪一个区块(创世块的索引是0)?&/li&&li&Hash:区块是否有效?&/li&&li&Previous Hash:前一个区块是否有效?&/li&&li&Timestamp:什么时候添加的区块?&/li&&li&Data:什么信息存储在区块上?&/li&&li&Nonce:在找到有效区块之前,我们进行了多少次迭代?&/li&&/ul&&p&&b&创世块&/b&&/p&&p&每一个区块链都是从&i&
Genesis Bloc&/i&k开始的。正如你们将要在后面看到的,区块链上的每一个区块都依赖于前一个区块。所以,需要创世块来挖出我们的第一个区块。&/p&&h2&&b&当一个新的区块被开采时会发生什么?&/b&&/h2&&img data-rawheight=&28& src=&/v2-586a756df2cfbb68aecc02_b.png& data-rawwidth=&262& class=&content_image& width=&262&&&p&让我们挖出我们的第一个区块。在命令行中输入&i&mine freeCodeCamp?&/i&。&/p&&p&区块链查看链上最新的区块来获取index和previous hash。在这个案例下创世块是最新的区块。&/p&&ul&&li&Index:0+1=1&/li&&li&Previous Hash:a828da0…&/li&&li&Timestamp:区块被添加的时间&/li&&li&Data:freeCodeCamp?&/li&&li&Hash:???&/li&&li&Nonce:???&/li&&/ul&&h2&&b&Hash是如何计算的?&/b&&/h2&&p&哈希值是唯一标识数据的固定长度的数值。&/p&&p&Hash是通过将Index、Previous Hash、Timestamp、Data和Nonce作为输入值来计算的。&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&CryptoJS&/span&&span class=&p&&.&/span&&span class=&nx&&SHA256&/span&&span class=&p&&(&/span&&span class=&nx&&index&/span& &span class=&o&&+&/span& &span class=&nx&&previousHash&/span& &span class=&o&&+&/span& &span class=&nx&&timestamp&/span& &span class=&o&&+&/span& &span class=&nx&&data&/span& &span class=&o&&+&/span& &span class=&nx&&nonce&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&SHA256算法将会依据这些输入计算出一个唯一Hash值。同样的输入总是会返回同样的结果。&/p&&p&&b&你是否注意到区块Hash中的四个前导0?&/b&&/p&&p&四个前导0是一个有效Hash的最低要求。所需前导0的数量被称之为&b&难度&/b&&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&kd&&function&/span& &span class=&nx&&isValidHashDifficulty&/span&&span class=&p&&(&/span&&span class=&nx&&hash&/span&&span class=&p&&,&/span& &span class=&nx&&difficulty&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&kd&&var&/span& &span class=&nx&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&nx&&b&/span& &span class=&o&&=&/span& &span class=&nx&&hash&/span&&span class=&p&&.&/span&&span class=&nx&&length&/span&&span class=&p&&;&/span& &span class=&nx&&i&/span& &span class=&o&&&&/span& &span class=&nx&&b&/span&&span class=&p&&;&/span& &span class=&nx&&i&/span& &span class=&o&&++&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&nx&&hash&/span&&span class=&p&&[&/span&&span class=&nx&&i&/span&&span class=&p&&]&/span& &span class=&o&&!==&/span& &span class=&s1&&'0'&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&nx&&i&/span& &span class=&o&&&=&/span& &span class=&nx&&difficulty&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&这也被称为&a href=&/?target=https%3A//en.wikipedia.org/wiki/Proof-of-work_system& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&工作证明系统&i class=&icon-external&&&/i&&/a&&/p&&h2&&b&Nonce是什么?&/b&&/h2&&p&Nonce是用来查找一个有效Hash的次数。&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&kd&&let&/span& &span class=&nx&&nonce&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&kd&&let&/span& &span class=&nx&&hash&/span&&span class=&p&&;&/span&
&span class=&kd&&let&/span& &span class=&nx&&input&/span&&span class=&p&&;&/span&
&span class=&k&&while&/span&&span class=&p&&(&/span&&span class=&o&&!&/span&&span class=&nx&&isValidHashDifficulty&/span&&span class=&p&&(&/span&&span class=&nx&&hash&/span&&span class=&p&&))&/span& &span class=&p&&{&/span&
&span class=&nx&&nonce&/span& &span class=&o&&=&/span& &span class=&nx&&nonce&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&nx&&input&/span& &span class=&o&&=&/span& &span class=&nx&&index&/span& &span class=&o&&+&/span& &span class=&nx&&previousHash&/span& &span class=&o&&+&/span& &span class=&nx&&timestamp&/span& &span class=&o&&+&/span& &span class=&nx&&data&/span& &span class=&o&&+&/span& &span class=&nx&&nonce&/span&&span class=&p&&;&/span&
&span class=&nx&&hash&/span& &span class=&o&&=&/span& &span class=&nx&&CryptoJS&/span&&span class=&p&&.&/span&&span class=&nx&&SHA256&/span&&span class=&p&&(&/span&&span class=&nx&&input&/span&&span class=&p&&)&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&Nonce迭代到直到Hash有效。在我们的案例中,一个有效的Hash至少要拥有4个前置0。查找与有效Hash对应的Nonce的过程就是挖矿。&/p&&p&随着&b&难度&/b&的增加,可能的有效Hash数量就会减少。伴随着有效Hash的减少,我们需要更强的算力来查找有效Hash。&/p&&h2&&b&为什么这么重要?&/b&&/h2&&p&这些机制非常重要,它们使区块链不可变。&/p&&p&如果我们有这么一个区块链“A-&B-&C”,而且有一个人想要改变区块A上的数据。那么会发生什么呢?&/p&&ol&&li&区块A上的数据改变了。&/li&&li&区块A的hash改变了,因为数据被用来计算hash。&/li&&li&区块A失效了,因为它的hash不再有4个前导0。&/li&&li&区块B的hash改变了,因为区块A的hash被用来计算区块B的hash。&/li&&li&区块B失效了,因为它的hash不再有4个前导0。&/li&&li&区块B的hash改变了,因为区块C的hash被用来计算区块B的hash。&/li&&li&区块C失效了,因为它的hash不再有4个前导0。&/li&&/ol&&p&&b&改变一个区块的唯一方法就是将这个区块重新挖一遍,接下来是所有的区块。由于总是有新的区块被添加,因此改变区块几乎是一件不可能的事。&/b&&/p&&p&我希望这个教程能够对您有所帮助!&/p&&p&如果您想要查看网页版的演示,请出门右转&a href=&/?target=http%3A//blockchaindemo.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&http://blockchaindemo.io&i class=&icon-external&&&/i&&/a&&/p&
原文: 作者: 译者:JeLewine 根据维基百科,区块链是:一个用于维护不断增长的记录列表的分布式数据库,我们称之为区块链。这听起来很棒,那它是如何工作的呢?为了说明区块链,我…
&img src=&/50/v2-ba2e5df36d427bff47eec_b.jpg& data-rawwidth=&968& data-rawheight=&544& class=&origin_image zh-lightbox-thumb& width=&968& data-original=&/50/v2-ba2e5df36d427bff47eec_r.jpg&&&blockquote&封面中的这个年轻人名叫&b&维塔里克·布特林(Vitalik Buterin)&/b&,以太坊创始人。我谨以这种方式向他表达我的崇敬之意。&/blockquote&&h2&&b&什么是以太坊(Ethereum)&/b&&/h2&&p&&b&以太坊(Ethereum)&/b&是一个基于区块链技术,允许任何人构建和使用去中心化应用的区块链平台。像比特币一样,以太坊是开源的,并由来自全世界的支持者们共同维护。与比特币仅提供了有限功能的脚本不同,以太坊提供了一个“图灵完备”的虚拟机,称为&b&以太坊虚拟机(Ethereum Virtual Machine)&/b&,简称&b&EVM&/b&,用户可以在EVM上创建&b&智能合约(Smart Contract)&/b&。以太坊平台中的通用货币为&b&以太币(Ether)&/b&,简称ETH,以太币可用于账号间的转账交易或者为EVM上运行的合约消耗的资源付费。&/p&&h2&&b&以太坊的创始人&/b&&/h2&&p&&b&维塔里克·布特林(Vitalik Buterin)&/b&,日生于俄罗斯,后移居加拿大,拥有俄罗斯和加拿大双国籍。2011年,通过比特币,他了解到了区块链和加密货币技术,并被区块链技术深深的吸引。2011年9月,作为联合创史人之一,创办了旨在向读者提供及时准确的区块链相关资讯的网站:&a href=&/?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bitcoin Magazine&i class=&icon-external&&&/i&&/a&。&/p&&p&此后的两年半里,布特林一直在思考区块链技术的更多创新应用,并最终在2013年9月,发布了&b&以太坊白皮书(Ethereum White Paper)&/b&,当时他只有19岁。&/p&&p&现在,作为以太坊的灵魂人物,他正领导着以太坊团队,致力于以太坊的开发和推广。&/p&&p&&br&&/p&&h2&&b&众筹计划&/b&&/h2&&p&为了筹措开发以太坊需要的资金,布特林发起了一次众筹。与一般的众筹不同,这次众筹只接受比特币支付,并会在以太坊正式发布后,使用以太坊中的通用货币以太币作为回报。这次众筹的简要情况如下:&/p&&ul&&li&时间:日-日,共42天。&/li&&li&兑换比例:前14天每1BTC兑换2000ETH,之后每天1BTC兑换的ETH数额减少30,直到1337ETH后不再减少。&/li&&/ul&&img src=&/v2-3b46ddc85bacbf3a3ec98e_b.png& data-rawwidth=&1894& data-rawheight=&924& class=&origin_image zh-lightbox-thumb& width=&1894& data-original=&/v2-3b46ddc85bacbf3a3ec98e_r.png&&&ul&&li&分配:众筹发行的ETH数额的19.8%将由以太坊基金会拥有,也就是说,初始发行的以太坊中,有1 / ( 1 + 19.8% ) = 83.47%属于参与众筹的人,剩下的16.53%由以太坊基金会所有。&/li&&li&用于接收众筹比特币的地址为:&a href=&/?target=https%3A///address/36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&这种形式的众筹,在今天我们一般称为&b&首次公开电子币众筹(Initial Coin Offering),&/b&也就是大家常说的ICO。&/p&&p&&br&&/p&&h2&&b&技术细节&/b&&/h2&&p&要想成功的完成这次众筹,要解决几个问题:&/p&&ul&&li&&b&证明众筹的地址是以太坊团队能够控制的&/b&&/li&&li&&b&众筹过程公开透明,筹到了多少BTC要对大家公开&/b&&/li&&li&&b&要能够及时准确的发放以太币给相应的参与众筹的人&/b&&/li&&/ul&&p&以太坊团队在众筹开始的前一天,花费了这个地址的一个UTXO,从而证明了他们持有这个地址的私钥,证明了是他们在控制这个地址。可以在这里看到这个交易:&a href=&/?target=https%3A///tx/592eaf32d83a7dbb3837d38edfbeabd548e578f51f80a& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&592eaf32d83a7dbb3837d38edfbeabd548e578f51f80a&i class=&icon-external&&&/i&&/a&&/p&&img src=&/v2-8b2e29becfe3dbf18ea008c_b.png& data-rawwidth=&2362& data-rawheight=&1580& class=&origin_image zh-lightbox-thumb& width=&2362& data-original=&/v2-8b2e29becfe3dbf18ea008c_r.png&&&p&公开透明,这不难做到,筹到了多少BTC,只要看一看比特币区块链中地址&a href=&/?target=https%3A///address/36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2&i class=&icon-external&&&/i&&/a&在众筹期间收到了多少BTC就可以了。&/p&&p&最后一点比较麻烦,新生的以太坊和比特币根本就是两个区块链,完全没有任何交集,怎么能够建立起关系呢?以太坊的开发者们想到了一个办法,甚至为了方便小白,还提供了一个脚本&a href=&/?target=https%3A///ethereum/pyethsaletool& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ethereum/pyethsaletool&i class=&icon-external&&&/i&&/a&。&/p&&p&步骤如下:&/p&&ol&&li&用户自己生成一个随机数seed&/li&&li&使用seed生成一个以太坊的公私钥对(pub , priv)&/li&&li&将公钥pub使用SHA-3摘要算法转换成Hash值,也就是以太坊中的钱包地址eth_address&/li&&li&将eth_address使用SHA256摘要算法生成Hash值,并转换成一个比特币地址btc_address&/li&&li&最后,参与者将想要支付给众筹项目的金额分为三部分,0.0002BTC的交易费,0.0001BTC支付到btc_address,剩下的金额支付到众筹地址&a href=&/?target=https%3A///address/36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2&i class=&icon-external&&&/i&&/a&。&/li&&li&把eth_address发送给以太坊项目组,eth_address将被写入创世区块,从而使参与者获得以太币。&/li&&li&保管好eth_address对应的公私钥对(pub , priv),以太坊正式发布后,就可以拥有和消费以太币了。&/li&&/ol&&p&支付给步骤4中生成的btc_address的0.0001BTC将被销毁,为什么这么说呢?比特币的地址其实是一个公钥的Hash值,当你想花费输出到某个地址的比特币时,你要提供两个东西,你的公钥和你使用对应私钥对交易的签名。当接收者验证一个交易时,先检查你提供的公钥的Hash值是不是和你要花费的地址相符,如果相符,再检查签名是不是这个公钥对应的私钥生成的。这个btc_address不是使用公钥生成的,如果想花费它,要从Hash反推出公钥,再从公钥反推出对应的私钥,这都是不可能的。因而这些比特币永远的被销毁了,好在0.0001BTC并不多。&/p&&p&那么为什么要这么做呢?为了解决众筹的比特币和未来产生的以太币的关联问题,以太坊项目组只要扫描以自己的地址&a href=&/?target=https%3A///address/36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2&i class=&icon-external&&&/i&&/a&为输出的所有交易,再使用同样的方法用你提供的eth_address生成一个btc_address,就可以证明,某笔包含btc_address为输出的交易是你支付的,也就可以把eth_address和众筹金额关联起来了。&/p&&p&&br&&/p&&h2&&b&举个例子&/b&&/h2&&p&区块链最大的好处就是永恒和公开,我们可以任意挖掘历史。让我们看看当年的参与者留下了什么吧。&/p&&p&我们随意从以太坊创世区块中找一位众筹参与者出来,看看他是怎么参与众筹的。&/p&&ol&&li&生成eth_address:&a href=&/?target=https%3A//etherscan.io/address/0x9c9deda0eaa605abccbea& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&9c9deda0eaa605abccbea&i class=&icon-external&&&/i&&/a&&/li&&li&生成btc_address:&a href=&/?target=https%3A///address/1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz&i class=&icon-external&&&/i&&/a&&/li&&li&创建一个比特币交易,支付0.0002BTC的交易费,支付0.0001BTC到btc_address,剩下的金额支付到众筹地址&a href=&/?target=https%3A///address/36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2&i class=&icon-external&&&/i&&/a&。&/li&&li&把自己的eth_address告知以太坊项目组&/li&&/ol&&p&完成这些后,他在比特币区块链中留下了一个交易:&a href=&/?target=https%3A///zh-cn/tx/379fd1b0067deeb0fbb5055f06cec0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&379fd1b0067deeb0fbb5055f06cec0&i class=&icon-external&&&/i&&/a&&/p&&img src=&/v2-3a0bedabb8c9d83f9bf571_b.png& data-rawwidth=&600& data-rawheight=&270& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-3a0bedabb8c9d83f9bf571_r.png&&&p&因为上面讲过的原因,&a href=&/?target=https%3A///address/1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz&i class=&icon-external&&&/i&&/a&上的0.0001BTC永远不可能被花费,可以在图中看到,三年过去了,它仍然是未使用状态,如果有一天这0.0001BTC被花费了,那么就将是比特币毁灭的一天。&/p&&p&&br&&/p&&p&下面以太坊项目组上场:&/p&&p&以太坊项目组收到参与者用邮件或者其他方式发来的eth_address(&a href=&/?target=https%3A//etherscan.io/address/0x9c9deda0eaa605abccbea& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&9c9deda0eaa605abccbea&i class=&icon-external&&&/i&&/a&),使用相同的算法转换成btc_address(&a href=&/?target=https%3A///address/1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz&i class=&icon-external&&&/i&&/a&),然后到比特币区块链中去找这个地址,发现了这个地址和交易&a href=&/?target=https%3A///zh-cn/tx/379fd1b0067deeb0fbb5055f06cec0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&379fd1b0067deeb0fbb5055f06cec0&i class=&icon-external&&&/i&&/a&相关联,这个交易中有支付给众筹地址的比特币,从而证明了eth_address的主人确实支付了众筹款项0.146BTC。&/p&&p&这位众筹参与者于日支付了0.146BTC,按当时的比率,1BTC=1370ETH,最终他获得了0.146 * 1370 = 200.02ETH。&/p&&img src=&/v2-4a7cea13de5d_b.png& data-rawwidth=&2364& data-rawheight=&972& class=&origin_image zh-lightbox-thumb& width=&2364& data-original=&/v2-4a7cea13de5d_r.png&&&p&如果你对这个eth_address转换成btc_address的过程感兴趣,我准备了个python脚本,有兴趣的朋友可以去github查看:&a href=&/?target=https%3A///yrjyrj123/ETH2BTC_Demo/blob/master/eth_address_to_btc_address.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&eth_address_to_btc_address.py&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&h2&&b&众筹结果&/b&&/h2&&p&众筹地址共收到8,947个交易,来自8,892个不重复的地址,有两个地址是在众筹时间段之外支付的,所以这两个地址不能获得以太币。通过此次众筹,以太坊项目组筹得31,529.356,395,51BTC,当时价值约1800w美元,0.8945BTC被销毁,1.7898BTC用于支付比特币交易的矿工手续费。&/p&&p&同时,以太坊发布后,需要支付给众筹参与者共计60,108,506.26以太币。&/p&&p&毫无疑问,这次众筹是极为成功的,正是这次成功的众筹,为以太坊项目组筹集了足够的启动经费。&/p&&p&&br&&/p&&h2&&b&创世区块&/b&&/h2&&p&在众筹成功一年后的日,以太坊正式发布。项目组兑现了承诺,创世区块中包含了8893个交易。&/p&&img src=&/v2-0a8775eeb0effd_b.png& data-rawwidth=&2346& data-rawheight=&1380& class=&origin_image zh-lightbox-thumb& width=&2346& data-original=&/v2-0a8775eeb0effd_r.png&&&p&为什么是8893个交易呢?这其中包含8890个众筹参与者,他们获得了用BTC兑换的以太币,共计60,108,506.26以太币,2个没能在规定时间参与的地址,虽然没有得到以太币,但是也被记录在区块链中。&/p&&p&另有11,901,484.239480以太币被支付给了以太坊基金会&a href=&/?target=https%3A//etherchain.org/account/0x5abfec25f74cd6f9& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&0x5abfec25f74cd6f9&i class=&icon-external&&&/i&&/a&。&/p&&img src=&/v2-c1e660badec0fd1e16cdba_b.png& data-rawwidth=&2140& data-rawheight=&808& class=&origin_image zh-lightbox-thumb& width=&2140& data-original=&/v2-c1e660badec0fd1e16cdba_r.png&&&p&所以,从创世那一刻起,以太坊中就有了72,009,990.49948以太币。&/p&&p&通常创世区块都是预先生成好的,以太坊的创世区块就是使用这个脚本&a href=&/?target=https%3A///ethereum/pyethsaletool/blob/ccde37fdf9c61a096fa1a2ebc1782e/genesis_block_generator.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&genesis_block_generator.py&i class=&icon-external&&&/i&&/a&生成的。这个生成好的创世区块的Hash(0xd4eaef8c010b86a40d5f06a34e69aec8c0db1cb8fa3)会被写进钱包软件中,从那一刻起,以太坊便正式宣告诞生。如果你想看看它在哪儿,这个Hash在&a href=&/?target=https%3A///ethereum/go-ethereum/blob/138f26c93af1a7bd3ad969fdf615bee9cc74a642/params/config.go& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&params/config.go&i class=&icon-external&&&/i&&/a&中。&/p&&img src=&/v2-b3f00cddf3ad4eac6c59c2_b.png& data-rawwidth=&1854& data-rawheight=&202& class=&origin_image zh-lightbox-thumb& width=&1854& data-original=&/v2-b3f00cddf3ad4eac6c59c2_r.png&&&p&&br&&/p&&h2&&b&以太币的来源&/b&&/h2&&p&与比特币不同,以太坊中的以太币并不全是矿工挖掘出来的,有大约7200w以太币是在创世时就已经创造出来了。到本文写作时,已经存在94,418,166.44以太币,其中76.3%是创世区块中包含的,挖矿产生的2100w以太币仅占到不足四分之一。&/p&&p&数据来源:&a href=&/?target=https%3A//etherscan.io/stat/supply& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ethereum Market Capitalization and Supply Statistics&i class=&icon-external&&&/i&&/a&&/p&&img src=&/v2-27edc9e502c2e9d43ec3e359fbd908ee_b.png& data-rawwidth=&1354& data-rawheight=&890& class=&origin_image zh-lightbox-thumb& width=&1354& data-original=&/v2-27edc9e502c2e9d43ec3e359fbd908ee_r.png&&&p&严谨的说,以太币的来源有两个,创世区块中包含的7200w和大约每年挖矿产生的1872W,并且目前为止,总量无上限。&/p&&p&&br&&/p&&h2&&b&关于ICO的看法&/b&&/h2&&p&众筹时均价0.3美元的以太币,而今已经超过300美元,升值1000倍。然而,以太坊的成功不是偶然,也不是暴利,更不是圈钱。以太坊实现了图灵完备的EVM,这是区块链技术领域划时代的创新,为智能合约提供了基础。短短两年时间,以太币市值不断上升,成为仅次于比特币的第二大电子币,并被新的ICO项目用来筹集资金。&/p&&p&&b&ICO仅仅是一种融资手段,不应该被妖魔化。&/b&&/p&&p&IPO是用美元、人民币等法币换股权证书,ICO是用有一定价值的数字资产换代币,二者如果都在合理的监管下,确保资金不被挪用,都是利国利民的好事儿。&/p&&p&然而,现在ICO已经被曲解和利用,成为了投机者手中圈钱的工具。看过《华尔街之狼》的人可能知道,主角贝尔福特利用了未公开上市的低价股,也被称为仙股,或者垃圾股,电影中称之为“粉红单”来骗取投资人的资金。如果缺乏监管,股票和ICO都可以用来圈钱,都可以扰乱市场。违法、欺骗、圈钱,这不应该是ICO的原罪。&/p&&p&ICO本无罪,有罪的是贪婪的人性和小白的愚蠢,只要监管得当,技术原理为更多人所了解,我相信它终会有所作为。&/p&&p&&br&&/p&&p&如果你喜欢这篇文章,就请收藏或点赞吧。&/p&&p&如果有任何问题或指正,包括不同的看法和观点,欢迎留言讨论。&/p&
封面中的这个年轻人名叫维塔里克·布特林(Vitalik Buterin),以太坊创始人。我谨以这种方式向他表达我的崇敬之意。什么是以太坊(Ethereum)以太坊(Ethereum)是一个基于区块链技术,允许任何人构建和使用去中心化应用的区块链平台。像比特币一样,以太坊是开…
&img src=&/50/v2-f8add33b67f5849dec0f125a416c64cd_b.jpg& data-rawwidth=&500& data-rawheight=&312& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/50/v2-f8add33b67f5849dec0f125a416c64cd_r.jpg&&&p&&/p&&p&欧成效,一个智商高还很拼的炒房客,战场在上海,传说是房产证集齐了一套扑克牌的数量的人,知识面之广阔,逻辑之通透令人叹服。其订阅号内容质量很高,值得关注。最近他推出了“正本清源比特币”系列,在圈里传的很火。欧的文章开篇就说,在投资界,是存在严格鄙视链的:楼市 & 股市 & 币圈,炒楼的看不起炒股的,炒股的看不起炒币的,然后他作为炒楼的大拿,开始了他对币圈的一系列鄙视。&/p&&p&&br&&/p&&p&1&/p&&p&比特币这种亚文化小IP,如何撑起这么高的估值?高估1000倍!这是欧成效眼中的比特币。&/p&&p&他认为,财富是一种观念,财富是由消费者决定的。消费者人口是不停变动的,因此“价值”也是不停变动的。并不是一个常量。如果蚊子统治了地球,则今天留下的所有物质财富,全部都没有价值。&/p&&p&一样东西之所以有价值,是因为有喜欢它的人。而且这个人活着,有购买力。哪里有消费者,哪里就有价值。&/p&&p&比如钻石,就是一块碳,而且全世界已经发现钻石不稀缺(拿来划玻璃很好用),但注入爱情的概念,就受到了亿万人的追捧,所以价格很高。&/p&&p&虽然感觉欧说的很有道理,但是我入行以来,对这个行业一直是不明觉厉,他说比特币价值被如此高估,我是不相信的。于是,为了弄清楚比特币的价值,我在身边朋友中做了一个调查,然后我大概搜集到如下答案:&/p&&blockquote&比特币是一种信仰;&br&匿名和去中心化带来的避险价值;&br&通缩性货币,数量有限,稀缺;&br&货币本身没有价值,在认同的群体里有置换货物的价值;&br&其背后区块链技术的价值;&br&黑市交易市场;&br&T+0,7*24小时不间断交易投机赚钱。&/blockquote&&p&2、3、4、5、6条都被欧否认了,我无力辩驳,但是对于1和7,他应该是无话可说,投机赚钱,成年人有“火中取粟”的自由,术业有专攻,有人擅长这个,靠优势赚钱,无可厚非;认为比特币是一种信仰,相信比特币价值。欧自己也说,财富不在于实用价值多少,而在于多少人相信它。你喜欢,它就值。&/p&&p&币圈几百万人(概数)就认可比特币值这么多钱。并且认为还会继续涨,涨到让你怀疑人生,就是最好的教育市场。(当年房市不也是这样么?)&/p&&p&认可它的人,认为它价值连城;不认可的人,认为一文不值。那么问题来了,比特币的价值是认可它的人说了算还是不认可它的人说了算?&/p&&p&我爱打王者荣耀,买皮肤花几千块,那些非人民币玩家可曾为市场贡献一分?谁买单谁说了算。&/p&&p&&br&&/p&&p&2&/p&&p&就在欧写比特币系列文章的短短一周,比特币从20000涨到27000,有朋友后台留言问他是否后悔踏空,欧鄙视人家没有见过赚钱机会,质问人家是不是要把全世界每一个涨幅商机都抓住。&/p&&p&可欧从2000年(可能更早)进入房地产,连押16把,每把都赢的行情机会他是抓住了,见过太多赚钱机会,可是对于我这种房市繁荣自己尚未出生的屌丝,一次涨幅都没抓过,现在币市有这样的行情和机会,去抓一抓,赚钱嘛,谈什么价值?&/p&&p&欧之前讲过一个概念,战点,说年轻人不怕挑战,怕的是连“拼命”的机会都没有。你的战点是房市,你擅长并且赚钱了。那也有千万的人选择比特币或者区块链资产交易作为战点,可以借市场红利,分得一杯羹。&/p&&p&欧文下有一条评论,或许可以代表很多币民的心态:&/p&&p&确实如欧所说,混币圈的基本上是屌丝。但是我还是要感谢中本聪。比特币让我这个社会最底层的人挣到了第一桶金。虽然这点钱在A8(身家8位数)泛滥的水库大军眼中一文不值,对于我这个屌丝来说,意义却太重大了。&/p&&p&币市跟房市一样,也存在很多创富神话,不过是战场不一样,赚到钱就是赢家。站在行情面前却错过200个涨停,确实值得惋惜。&/p&&p&前20年看空房市的人,被“多军”(有多套房产的群体)笑称“傻空”,那现在看空币市的呢?从2008年比特币问世以来,价格有波动,大势头是迅猛上涨的,2016年涨幅超过200,击败所有货币,股票指数,商品合约。比特币闹分叉也几乎没影响币价,更是证明了比特币的强势和稳定。&/p&&p&有人的地方就有利益,有利益,就有江湖。&/p&&p&市场很聪明,比特币绝不是欧成效所说的价值高估1000倍。&/p&&p&3&/p&&p&屌丝如果看不上屌丝的赚钱方式,就只能一直沦为屌丝了,欧这种“上等人”看不上的市场,不意味着我们都要去看不上。有钱不赚,绝非吾愿!&/p&&p&何况,币圈也是有很多科技树,量化策略交易就是很有效的方法,毕竟数字资产交易市场,量化交易才刚刚起步,现在还是比较无效的市场,传统行业常用的策略在这个市场也能跑得很有效。比如上&a href=&/?target=https%3A//wequant.io& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&WeQuant微宽网&i class=&icon-external&&&/i&&/a&用量化策略交易比特币,某人已经实现每天加鸡腿的小目标了。&/p&&p&&/p&
欧成效,一个智商高还很拼的炒房客,战场在上海,传说是房产证集齐了一套扑克牌的数量的人,知识面之广阔,逻辑之通透令人叹服。其订阅号内容质量很高,值得关注。最近他推出了“正本清源比特币”系列,在圈里传的很火。欧的文章开篇就说,在投资界,是存在…
&img src=&/50/v2-ee396a321b8db7f65a31_b.jpg& data-rawwidth=&527& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&527& data-original=&/50/v2-ee396a321b8db7f65a31_r.jpg&&&p&写在前言:&/p&&p&个人的观点认为&b&比特币&/b&并不是核心的内容。&/p&&p&比特币不是一种“狭义”上的货币单位。&/p&&blockquote&&b&比特币是由一系列概念和技术作为基础构建的数字货币生态系统&/b&。《精通比特币》&/blockquote&&p&以下是英文原版地址:&/p&&p&&a href=&/?target=https%3A//bitcoin.org/bitcoin.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&bitcoin.org/bitcoin.pdf&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&(Ps:图还是看英文原版的好,这样更能理解意思。)&/p&&p&带中文图翻译地址:&/p&&p&&a href=&/?target=http%3A///wiki/bitcoin-a-peer-to-peer-electronic-cash-system& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/wiki/bitcoin-a&/span&&span class=&invisible&&-peer-to-peer-electronic-cash-system&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&h2&&b&比特币源码地址:&/b&&/h2&&p&&a href=&/?target=https%3A///bitcoin/bitcoin/blob/master/src/util.cpp%23L1325& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/bitcoin/bitc&/span&&span class=&invisible&&oin/blob/master/src/util.cpp#L1325&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///bitcoin/bitcoin/blob/285cf7a1a6cb660b57cbc75f63ee/src/main.cpp%23L2056& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/bitcoin/bitc&/span&&span class=&invisible&&oin/blob/285cf7a1a6cb660b57cbc75f63ee/src/main.cpp#L2056&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&&a href=&/?target=https%3A///bitcoin/bitcoin/blob/285cf7a1a6cb660b57cbc75f63ee/src/main.cpp%23L2129& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/bitcoin/bitc&/span&&span class=&invisible&&oin/blob/285cf7a1a6cb660b57cbc75f63ee/src/main.cpp#L2129&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&h2&&b&比特币:一种点对点的电子现金系统&/b&&/h2&&p&&b&
中本聪(Satoshi Nakamoto)&/b&
&a href=&/?target=http%3A//www.bitcoin.org& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bitcoin.org&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
&/p&&p&&b&摘要&/b&:本文提出了一种完全通过点对点技术实现的电子现金支付系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。虽然数字签名部分解决了这个问题,但是如果仍然需要第三方的支持才能防止双重支付的话,那么这种系统也就失去了存在的价值。我们在此提出一种解决方案,使现金系统在点对点的环境下运行,并防止双重支付问题。该网络通过随机散列对全部交易加上时间戳,将它们合并入一个不断延伸的基于随机散列的工作量证明的链条作为交易记录,除非重新完成全部的工作量证明,形成的交易记录将不可更改。最长的链条不仅将作为被观察到的事件序列的证明,而且被看做是来自CPU计算能力最大的池。只要大多数的 CPU 计算能力都没有打算合作起来对全网进行击,那么诚实的节点将会生成最长的、超过攻击者的链条。这个系统本身需要的基础设施非常少。信息尽最大努力在全网传播即可,节点可以随时离开和重新加入网络,并将最长的工作量证明链条作为在该节点离线期间发生的交易的证明。
&/p&&h2&&b&1. 简介&/b&&/h2&&p&
互联网上的贸易,几乎都需要借助金融机构作为可资信赖的第三方来处理电子支付信息。虽然这类系统在绝大多数情况下都运作良好,但是这类系统仍然内生性地受制于“基于信用的模式”的弱点。我们无法实现完全不可逆的交易,因为金融机构总是不可避免地会出面协调争端。而金融中介的存在,也会增加交易的成本,并且限制了实际可行的最小交易规模,也限制了日常的小额支付交易。并且潜在的损失还在于,很多商品和服务本身是无法退货的,如果缺乏不可逆的支付手段,互联网的贸易就大大受限。因为有潜在的退款的可能,就需要交易双方拥有信任。而商家也必须提防自己的客户,因此会向客户索取完全不必要的个人信息。而实际的商业行为中,一定比例的欺诈性客户也被认为是不可避免的,相关损失视作销售费用处理。而在使用物理现金的情况下,这些销售费用和支付问题上的不确定性却是可以避免的,因为此时没有第三方信用中介的存在。所以,我们非常需要这样一种电子支付系统,它基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与。杜绝回滚支付交易的可能,这就可以保护特定的卖家免于欺诈;而对于想要保护买家的人来说,在此环境下设立通常的第三方担保机制也可谓轻松加愉快。在
这篇论文中,我们将提出一种通过点对点分布式的时间戳服务器来生成依照时间前后排列并加以记录的电子交易证明,从而解决双重支付问题。只要诚实的节点所控制的计算能力的总和,大于有合作关系的攻击者的计算能力的总和,该系统就是安全的。
&/p&&h2&&b&2. 交易&/b&&/h2&&p&
我们定义,一枚电子货币是这样的一串数字签名:每一位所有者通过对前一次交易和下一位拥有者的公钥签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。而收款人通过对签名进行检验,就能够验证该链条的所有者。&/p&&br&&img src=&/v2-c2ea2df4329_b.png& data-rawwidth=&600& data-rawheight=&336& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-c2ea2df4329_r.png&&&p&
该过程的问题在于,收款人将难以检验,之前的某位所有者,是否对这枚电子货币进行了双重支付。通常的解决方案,就是引入信得过的第三方权威,或者类似于造币厂的机构,来对每一笔交易进行检验,以防止双重支付。在每一笔交易结束后,这枚电子货币就要被造币厂回收,而造币厂将发行一枚新的电子货币;而只有造币厂直接发行的电子货币,才算作有效,这样就能够防止双重支付。可是该解决方案的问题在于,整个货币系统的命运完全依赖于运作造币厂的公司,因为每一笔交易都要经过该造币厂的确认,而该造币厂就好比是一家银行。我们需要收款人有某种方法,能够确保之前的所有者没有对更早发生的交易实施签名。从逻辑上看,为了达到目的,实际上我们需要关注的只是于本交易之前发生的交易,而不需要关注这笔交易发生之后是否会有双重支付的尝试。为了确保某一次交易是不存在的,那么唯一的方法就是获悉之前发生过的所有交易。在造币厂模型里面,造币厂获悉所有的交易,并且决定了交易完成的先后顺序。如果想要在电子系统中排除第三方中介机构,那么交易信息就应当被公开宣布,我们需要整个系统内的所有参与者,都有唯一公认的历史交易序列。收款人需要确保在交易期间绝大多数的节点都认同该交易是首次出现。
&/p&&h2&&b&3. 时间戳服务器&/b&&/h2&&p&本解决方案首先提出一个“时间戳服务器”。时间戳服务器通过对以区块形式存在的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,就像在新闻或世界性新闻组网络的发帖一样。显然,该时间戳能够证实特定数据必然于某特定时间是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强,这样就形成了一个链条。
&/p&&img src=&/v2-49c7cd3f26daa781f5b0432_b.png& data-rawwidth=&600& data-rawheight=&182& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-49c7cd3f26daa781f5b0432_r.png&&&br&&h2&&b&4. 工作量证明&/b&
&/h2&&p&为了在点对点的基础上构建一组分散化的时间戳服务器,仅仅像报纸或世界性新闻网络组一样工作是不够的,我们还需要一个类似于亚当o柏克提出的哈希现金。在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,比方说 SHA-256 下,随机散列值以一个或多个 0 开始。那么随着 0 的数目的上升, 找到这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。
&/p&&p&我们在区块中补增一个随机数,这个随机数要使得该给定区块的随机散列值出现了所需的那么多个 0。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制。只要该 CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
&/p&&img src=&/v2-8afc9c0e2d6e3067fbd0dc3cc073067b_b.png& data-rawwidth=&600& data-rawheight=&157& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-8afc9c0e2d6e3067fbd0dc3cc073067b_r.png&&&br&&p&同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问题。如果决定大多数的方式是基于IP 地址的,一 IP 地址一票,那么如果有人拥有分配大量 IP 地址的权力,则该机制就被破坏了。而工作量证明机制的本质则是一 CPU 一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的 CPU 为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。我们将在后文证明,设想一个较慢的攻击者试图赶上随后的区
块,那么其成功概率将呈指数化递减。另一个问题是,硬件的运算速度在高速增长,而节点参与网络的程度则会有所起伏。为了解决这个问题,工作量证明的难度将采用移动平均目标的方法来确定,即令难度指向令每小时生成区块的速度为某一个预定的平均数。如果区块生成的速度过快,那么难度就会提高。
&/p&&h2&&b&5. 网络&/b&
&/h2&&p&运行该网络的步骤如下:
&/p&&p&1) 新的交易向全网进行广播;
&/p&&p&2) 每一个节点都将收到的交易信息纳入一个区块中;
&/p&&p&3) 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
&/p&&p&4) 当一个节点找到了一个工作量证明,它就向全网进行广播;
&/p&&p&5) 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
&/p&&p&6) 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。
&/p&&p&节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。该僵局(tie)的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。所谓“新的交易要广播”,实际上不需要抵达全部的节点。只要交易信息能够抵达足够多的节点,那么他们将很快被整合进一个区块中。而区块的广播对被丢弃的信息是具有容错能力的。如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求。
&/p&&h2&&b&6. 激励&/b&&/h2&&p&
我们约定如此:每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。这样就增加了节点支持该网络的激励,并在没有中央集权机构发行货币的情况下,提供了一种将电子货币分配到流通领域的一种方法。这种将一定数量新货币持续增添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。此时,CPU 的时间和电力消耗就是消耗的资源。另外一个激励的来源则是交易费。如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中。只要既定数量的电子货币已经进入流通,那么激励机制就可以逐渐转换为完全依靠交易费,那么本货币系统就能够免于通货膨胀。激励系统也有助于鼓励节点保持诚实。如果有一个贪婪的攻击者能够调集比所有诚实节点加起来还要多的CPU 计算力,那么他就面临一个选择:要么将其用于诚实工作产生新的电子货币,或者将其用于进行二次支付攻击。那么他就会发现,按照规则行事、诚实工作是更有利可图的。因为该等规则使得他能够拥有更多的电子货币,而不是破坏这个系统使得其自身财富的有效性受损。
&/p&&h2&&b&7. 回收硬盘空间&/b&&/h2&&p&
如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前的数据,以回收硬盘空间。为了同时确保不损害区块的随机散列值,交易信息被随机散列时,被构建成一种梅克尔树(Merkle tree)的形态,使得只有根被纳入了区块的随机散列值。通过将该树的分支拔除的方法,老区块就能被压缩。而内部的随机散列值是不必保存的。&/p&&br&&img src=&/v2-f9bfc1ed10f642e71baa9_b.png& data-rawwidth=&600& data-rawheight=&316& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-f9bfc1ed10f642e71baa9_r.png&&&p&
不含交易信息的区块头大小仅有 80 字节。如果我们设定区块生成的速率为每 10 分钟一个,那么每一年产生的数据位 4.2MB。(80 bytes * 6 * 24 * 365 = 4.2MB)。2008 年,PC 系统通常的内存容量为 2GB,按照摩尔定律的预言,即使将全部的区块头存储于内存之中都不是问题。
&/p&&h2&&b&8. 简化的支付确认&/b&
&/h2&&p&在不运行完整网络节点的情况下,也能够对支付进行检验。一个用户需要保留最长的工作量证明链条的区块头的拷贝,它可以不断向网络发起询问,直到它确信自己拥有最长的链条,并能够通过

我要回帖

更多关于 比特币自动交易系统 的文章

 

随机推荐