这是一本知识普及性的书籍,里面没有具体的细节,更多的是一些概念和常识。
没有研究价值,作为入门看一下了解了解,也是可以的。

d29b79b1.png

参考

公有链(Public blockchains)

公有链是对所有人公开,用户不需要注册和授权就能够匿名访问网络和区块,任何人都可以自由加入和退出网络,并参与记账和交易。

公有链是真正完全意义上的去中心化区块链,它通过密码学(非对称加密)算法保证了交易的安全性和不可篡改性,在陌生的网络(非安全)环境中,建立了互信和共识机制。在公有链中共识机制一般是工作量证明(POW)和权益证明(POS)。

公有链因为人人可参与,无需授权的特点又被称为非许可链,即不需要验证身份即可参与一切网络活动。目前比特币、以太坊、超级账本、大多数山寨币以及智能合约都是建立在公有链上,其中公有链的始祖是比特币区块链。

公有链适用于数字货币、电子商务、互联网金融、知识产权等应用场景。

阅读全文 »

暂时留空,后面填。

merkle tree

以太坊的每一个区块头,并非只包含一颗梅克尔树,而是包含了三颗梅克尔树,分别对应了三种对象:
交易(Transactions)
收据(Receipts,基本上,它是展示每一笔交易影响的数据条)
状态(State)

ffbe32d4.png

这使得一个非常先进的轻客户端协议成为了可能,它允许轻客户端轻松地进行并核实以下类型的查询答案:

  1. 这笔交易被包含在特定的区块中了么?
  2. 告诉我这个地址在过去30天中,发出X类型事件的所有实例(例如,一个众筹合约完成了它的目标)
  3. 目前我的账户余额是多少?
  4. 这个账户是否存在?
  5. 假装在这个合约中运行这笔交易,它的输出会是什么?
    第一种是由交易树(transaction tree)来处理的;第三和第四种则是由状态树(state tree)负责处理,第二种则由收据树(receipt tree)处理。计算前四个查询任务是相当简单的。服务器简单地找到对象,获取梅克尔分支,并通过分支来回复轻客户端。
    第五种查询任务同样也是由状态树处理,但它的计算方式会比较复杂。这里,我们需要构建下我们称之为梅克尔状态转变的证明(Merkle state transition proof)。

随时更新

解析的 bitcoin 版本 0.16.1

基础概念简介

  1. 共识机制
  2. 防止篡改
  3. 重复交易(double spending)

分析数据结构

height 	100000
{
"hash": "000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506",
"ver": 1,
"prev_block": "000000000002d01c1fccc21636b607dfd930d31d01c3a62104612a1719011250",
"mrkl_root": "f3e94742aca4b5ef85488dc37c06c3282295ffec960994b2c0d5ac2a25a95766",
"time": 1293623863,
"bits": 453281356,
"nonce": 274148111,
"n_tx": 4,
"size": 957,
"tx": [
{
"hash": "8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87",
"ver": 1,
"vin_sz": 1,
"vout_sz": 1,
"lock_time": 0,
"size": 135,
"in": [
{
"prev_out": {
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"n": 4294967295
},
"coinbase": "044c86041b020602"
}
],
"out": [
{
"value": "50.00000000",
"scriptPubKey": "041b0e8c2567c12536aa13357b79a073dc4444acb83c4ec7a0e2f99dd7457516c5817242da796924ca4e99947d087fedf9ce467cb9f7c6287078f801df276fdf84 OP_CHECKSIG",
"next_in": {
"hash": "f3e6066078e815bb24db0dfbff814f738943bddaaa76f8beba360cfe2882480a",
"n": 12
}
}
],
"nid": "70ab531a68f973f7d20b8260cb5e7fecba3699c48715b8b44539ff9776d0b88e"
},
{
"hash": "fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4",
"ver": 1,
"vin_sz": 1,
"vout_sz": 2,
"lock_time": 0,
"size": 259,
"in": [
{
"prev_out": {
"hash": "87a157f3fd88ac7907c05fc55e271dc4acdc5605d187d646604ca8c0e9382e03",
"n": 0
},
"scriptSig": "3046022100c352d3dd993a981beba4a63ad15c209275ca9470abfcd57da93b58e4eb5dce82022100840792bc1f456062819f15d33ee7055cf7b5ee1af1ebcc6028d9cdb1c3af774801 04f46db5e9d61a9dc27b8d64ad23e7383a4e6ca164593c2527c038c0857eb67ee8e825dca65046b82c9331586c82e0fd1f633f25f87c161bc6f8a630121df2b3d3"
}
],
"out": [
{
"value": "5.56000000",
"scriptPubKey": "OP_DUP OP_HASH160 c398efa9c392ba6013c5e04ee729755ef7f58b32 OP_EQUALVERIFY OP_CHECKSIG",
"address": "1JqDybm2nWTENrHvMyafbSXXtTk5Uv5QAn",
"next_in": {
"hash": "5aa8e36f9423ee5fcf17c1d0d45d6988b8a5773eae8ad25d945bf34352040009",
"n": 6
}
},
{
"value": "44.44000000",
"scriptPubKey": "OP_DUP OP_HASH160 948c765a6914d43f2a7ac177da2c2f6b52de3d7c OP_EQUALVERIFY OP_CHECKSIG",
"address": "1EYTGtG4LnFfiMvjJdsU7GMGCQvsRSjYhx",
"next_in": {
"hash": "220ebc64e21abece964927322cba69180ed853bb187fbc6923bac7d010b9d87a",
"n": 0
}
}
],
"nid": "fc7704fdd7ec5e69163e51b827fea2133990a26defee2b475408b3c16fd9a968"
},
{
"hash": "6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4",
"ver": 1,
"vin_sz": 1,
"vout_sz": 2,
"lock_time": 0,
"size": 257,
"in": [
{
"prev_out": {
"hash": "cf4e2978d0611ce46592e02d7e7daf8627a316ab69759a9f3df109a7f2bf3ec3",
"n": 1
},
"scriptSig": "30440220032d30df5ee6f57fa46cddb5eb8d0d9fe8de6b342d27942ae90a3231e0ba333e02203deee8060fdc70230a7f5b4ad7d7bc3e628cbe219a886b84269eaeb81e26b4fe01 04ae31c31bf91278d99b8377a35bbce5b27d9fff15456839e919453fc7b3f721f0ba403ff96c9deeb680e5fd341c0fc3a7b90da4631ee39560639db462e9cb850f"
}
],
"out": [
{
"value": "0.01000000",
"scriptPubKey": "OP_DUP OP_HASH160 b0dcbf97eabf4404e31d952477ce822dadbe7e10 OP_EQUALVERIFY OP_CHECKSIG",
"address": "1H8ANdafjpqYntniT3Ddxh4xPBMCSz33pj",
"next_in": {
"hash": "ae1933ba2b7dc9702c96b99fb00f1df1392d9dea998a24b88d61974e8da8d2ab",
"n": 0
}
},
{
"value": "2.99000000",
"scriptPubKey": "OP_DUP OP_HASH160 6b1281eec25ab4e1e0793ff4e08ab1abb3409cd9 OP_EQUALVERIFY OP_CHECKSIG",
"address": "1Am9UTGfdnxabvcywYG2hvzr6qK8T3oUZT",
"next_in": {
"hash": "20ed3fc9688a13fceeae5fdd606266c351b1f15b90404d9df387644e4c3d5b90",
"n": 3
}
}
],
"nid": "fe8c78250fb2a8e5a91e60a93ca7ddaf048a0d0d7dfb5663456c2265a0a0aaea"
},
{
"hash": "e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d",
"ver": 1,
"vin_sz": 1,
"vout_sz": 1,
"lock_time": 0,
"size": 225,
"in": [
{
"prev_out": {
"hash": "f4515fed3dc4a19b90a317b9840c243bac26114cf637522373a7d486b372600b",
"n": 0
},
"scriptSig": "3046022100bb1ad26df930a51cce110cf44f7a48c3c561fd977500b1ae5d6b6fd13d0b3f4a022100c5b42951acedff14abba2736fd574bdb465f3e6f8da12e2c5303954aca7f78f301 04a7135bfe824c97ecc01ec7d7e336185c81e2aa2c41ab175407c09484ce9694b44953fcb751206564a9c24dd094d42fdbfdd5aad3e063ce6af4cfaaea4ea14fbb"
}
],
"out": [
{
"value": "0.01000000",
"scriptPubKey": "OP_DUP OP_HASH160 39aa3d569e06a1d7926dc4be1193c99bf2eb9ee0 OP_EQUALVERIFY OP_CHECKSIG",
"address": "16FuTPaeRSPVxxCnwQmdyx2PQWxX6HWzhQ",
"next_in": {
"hash": "1ebf2dd645b815a59e35485dd4ceebc0587a1b7588b810e42085b479ce507bfa",
"n": 1
}
}
],
"nid": "9e763d097af86cb157abacc0bdb3e31db5968390d065f2af0453e3f03c9260b0"
}
],
"mrkl_tree": [
"8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87",
"fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4",
"6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4",
"e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d",
"ccdafb73d8dcd0173d5d5c3c9a0770d0b3953db889dab99ef05b1907518cb815",
"8e30899078ca1813be036a073bbf80b86cdddde1c96e9e9c99e9e3782df4ae49",
"f3e94742aca4b5ef85488dc37c06c3282295ffec960994b2c0d5ac2a25a95766"
],
"next_block": "00000000000080b66c911bd5ba14a74260057311eaeb1982802f7010f1a9f090"
}

16进制数据,littleendian 表示

01000000 int32_t nVersion; 版本信息
50120119172a610421a6c3011dd330d9df07b63616c2cc1f1cd0020000000000 uint256 hashPrevBlock
6657a9252aacd5c0b2940996ecff952228c3067cc38d4885efb5a4ac4247e9f3 uint256 hashMerkleRoot
37221b4d nTime
4c86041b nBits
0f2b5710 nNonce
040100000001
0000000000000000000000000000000000000000000000000000000000000000 第 1 笔交易 in "hash"
ffffffff "n"
08 044c86041b020602 "coinbase"
ffffffff
0100f2052a010000004341
041b0e8c2567c12536aa13357b79a073dc4444acb83c4ec7a0e2f99dd7457516c5817242da796924ca4e99947d087fedf9ce467cb9f7c6287078f801df276fdf84 "out" - "scriptPubKey"
ac000000000100000001032e38e9c0a84c6046d687d10556dcacc41d275ec55fc00779ac88fdf357a187000000008c493046022100c352d3dd993a981beba4a63ad15c209275ca9470abfcd57da93b58e4eb5dce82022100840792bc1f456062819f15d33ee7055cf7b5ee1af1ebcc6028d9cdb1c3af7748014104f46db5e9d61a9dc27b8d64ad23e7383a4e6ca164593c2527c038c0857eb67ee8e825dca65046b82c9331586c82e0fd1f633f25f87c161bc6f8a630121df2b3d3ffffffff0200e32321000000001976a914c398efa9c392ba6013c5e04ee729755ef7f58b3288ac000fe208010000001976a914948c765a6914d43f2a7ac177da2c2f6b52de3d7c88ac000000000100000001c33ebff2a709f13d9f9a7569ab16a32786af7d7e2de09265e41c61d078294ecf010000008a4730440220032d30df5ee6f57fa46cddb5eb8d0d9fe8de6b342d27942ae90a3231e0ba333e02203deee8060fdc70230a7f5b4ad7d7bc3e628cbe219a886b84269eaeb81e26b4fe014104ae31c31bf91278d99b8377a35bbce5b27d9fff15456839e919453fc7b3f721f0ba403ff96c9deeb680e5fd341c0fc3a7b90da4631ee39560639db462e9cb850fffffffff0240420f00000000001976a914b0dcbf97eabf4404e31d952477ce822dadbe7e1088acc060d211000000001976a9146b1281eec25ab4e1e0793ff4e08ab1abb3409cd988ac0000000001000000010b6072b386d4a773235237f64c1126ac3b240c84b917a3909ba1c43ded5f51f4000000008c493046022100bb1ad26df930a51cce110cf44f7a48c3c561fd977500b1ae5d6b6fd13d0b3f4a022100c5b42951acedff14abba2736fd574bdb465f3e6f8da12e2c5303954aca7f78f3014104a7135bfe824c97ecc01ec7d7e336185c81e2aa2c41ab175407c09484ce9694b44953fcb751206564a9c24dd094d42fdbfdd5aad3e063ce6af4cfaaea4ea14fbbffffffff0140420f00000000001976a91439aa3d569e06a1d7926dc4be1193c99bf2eb9ee088ac00000000

hash 是这个区块的 header 的 hash 值,也就是下面的数据的 hash 值

class CBlockHeader
{
public:
// header
int32_t nVersion;
uint256 hashPrevBlock;
uint256 hashMerkleRoot;
uint32_t nTime;
uint32_t nBits;
uint32_t nNonce;
}

代码入口

83035bde.png

检查点

可以自己生成几个区块,然后放到下面的字段中

static Checkpoints::MapCheckpoints mapCheckpoints =
boost::assign::map_list_of
( BLOCK_HEIGHT, uint256S("0xBLOCK_HASH"));


static const Checkpoints::CCheckpointData data = {
&mapCheckpoints,
bitcoin-cli getblock [last checkpoint block], then get the unix time, // * UNIX timestamp of last checkpoint block
Write a script to count?, // * total number of transactions between genesis and last checkpoint
// (the tx=... number in the SetBestChain debug.log lines)
estimate_a_number // * estimated number of transactions per day after checkpoint
};
// What makes a good checkpoint block?
// + Is surrounded by blocks with reasonable timestamps
// (no blocks before with a timestamp after, none after with
// timestamp before)
// + Contains no strange transactions
static MapCheckpoints mapCheckpoints =
boost::assign::map_list_of

Merkle Tree相关

多笔交易,收集在每块的交易数据部分,然后计算hash值,每对hash值在计算hash值,直到最后一个。the merkle root of a merkle tree.
4f68594945ccded4d77a01992db7f4c5 是4笔交易的merkle root

88f81555.png

merkle_root.cpp

2d44838b.png

而这样做的好处,也就是中本聪描述到的“简化支付验证”(SPV)的概念:而不是下载每一笔交易以及每一个区块,一个“轻客户端”(light client)可以仅下载链的区块头,每个区块中仅包含五项内容,数据块大小为80字节:

  1. 上一区块头的哈希值
  2. 时间戳
  3. 挖矿难度值
  4. 工作量证明随机数(nonce)
  5. 包含该区块交易的梅克尔树的根哈希

常规的签名机制下,如果私钥丢失,那么就无法花费对应地址的货币了,因为无法做签名。

所以引入了多重签名的概念,来解决这个问题

具体来说,就是假设N个人分别持有N个私钥,只要其中M个人同意签名就可以动用某个“联合地址”的资金。

多重签名地址实际上是一个Script Hash,以2-3类型的多重签名为例,它的创建过程如下:

阅读全文 »

Factom(公证通)–基于区块链的存证系统

ongoing…

什么是 Merkle Tree

是一种树,也称为 Merkle Hash Tree,因为所有节点都是 hash 值

在密码学及计算机科学中,哈希树(hash tree)是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而非叶节点则以其子节点标签的加密哈希作为标签 。哈希树能够高效、安全地验证大型数据结构的内容,是哈希链的推广形式。

哈希树的概念由瑞夫·墨克于 1979 年申请专利,故亦称墨克树(Merkle tree)。

特点

  • 它是一种树,可以是二叉树,也可以多叉树,具有树结构的所有特点
  • 叶子节点上的 value,是由你指定的,这主要看你的设计了,如 Merkle Hash Tree 会将数据的 Hash 值作为叶子节点的值;
  • 非叶子节点的 value 是根据它下面所有的叶子节点值,然后按照一定的算法计算而得出的。
    如 Merkle Hash Tree 的非叶子节点 value 的计算方法是将该节点的所有子节点进行组合,然后对组合结果进行 hash 计算所得出的 hash value。
8e3c5408.png

用途

数字签名

最初Merkle Tree目的是高效的处理Lamport one-time signatures。 每一个Lamport key只能被用来签名一个消息,但是与Merkle tree结合可以来签名多条Merkle。这种方法成为了一种高效的数字签名框架,即Merkle Signature Scheme。

Merkle proof 如何工作的?

用来判断下面几种情况

  1. 数据是否属于 Merkle tree
  2. 不需要保存整个数据集,就能够简洁的证明某个数据属于该数据集
  3. 能够证明一个数据集属于一组更大的数据集,而不需要展示整个数据集或者他的子集

Merkle Tree 拓展了单向哈希的应用。
Merkle proof 是通过把子哈希连在一起然后再计算哈希的方式一直递归向上,直到得到根哈希值,作为公钥。
单向哈希算法不会产生碰撞,并且是确定性算法,不会有两个明文的哈希值相同的情况。

d7199733.png

比特币的Merkle Tree
2d44838b.png

P2P网络

在P2P网络中,Merkle Tree用来确保从其他节点接受的数据块没有损坏且没有被替换,甚至检查其他节点不会欺骗或者发布虚假的块。

Trusted Computing

e636ff03.png

IPFS

IPFS(InterPlanetary File System)是很多NB的互联网技术的综合体,如DHT( Distributed HashTable,分布式哈希表),Git版本控制系统,Bittorrent等。它创建了一个P2P的集群,这个集群允许IPFS对象的交换。全部的IPFS对象形成了一个被称作Merkle DAG的加密认证数据结构。

版本 16.04 TLS

切换源

备份 /etc/apt/sources.list

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

// 修改源
sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

输入

sudo gedit /etc/apt/sources.list

将下面的源复制到文件中,注销一下在执行,问题少些。

sudo apt-get update
sudo apt-get upgrade
# 阿里云deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

# 清华大学 deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse

# Xenial (16.04) - Last update : Mon, 04 Jun 2018 23:27:51 UTC / Revision: 333935
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial main
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial main
# 5.0
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main
# 6.0
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main

clang源

install ssh

sudo apt install ssh
service ssh status

如果出现登录密码不对的问题

sudo nano /etc/ssh/sshd_config
找到 # Authentication: 列 确保 PermitRootLogin yes
然后重启 ssh-server
sudo /etc/init.d/ssh restart

clang (6.0) on Ubuntu 16.04 (xenial) lldb

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
sudo apt-get install clang-6.0 clang-tools-6.0 clang-6.0-doc libclang-common-6.0-dev libclang-6.0-dev libclang1-6.0 libllvm-6.0-ocaml-dev libllvm6.0 lldb-6.0 llvm-6.0 llvm-6.0-dev llvm-6.0-doc llvm-6.0-examples llvm-6.0-runtime clang-format-6.0 python-clang-6.0 lldb-6.0-dev lld-6.0 libfuzzer-6.0-dev

sudo apt-get remove –auto-remove lldb

lldb 7.0
sudo add-apt-repository ppa:jonathonf/gcc-7.1
sudo apt-get update
sudo apt-get install gcc-7 g++-7

支持exFat

sudo apt-get install exfat-fuse exfat-utils

Stellar 网络概览

22fe07f0.png

使用 Stellar 网路,可以构建钱包应用,银行工具,支持支付的智能设备。 使用起来并不复杂。

API: Horizon

大多数应用是通过 Horizon 来同 Stellar 网络交互的。 是一个 RESTful HTTP API 服务。
可以提交交易,检查账户,订阅事件,也可以使用支持多种语言的 Stellar SDK

Stellar Core

Stellar Core(后面简称SC) 是 Stellar 网络的主干网,每个 Horizon 服务都会连接到 SC,SC 负责校验交易,达成共识。
核心是大量的单独节点运行而构成的分布式网络。网络上的每笔交易都有手续费 100 stroops (等于 0.00001 XLM). 防止垃圾信息
污染网络。

Stellar 一致性协议 (SCP)

SCP白皮书
相对于活跃度 SCP 更看重安全,对于行为可疑的节点会停止网络处理,直到达成共识

使用 docker 运行 Stellar Core

stellar/quickstart docker image

Testnet

提供了用于测试的网络这里

ubuntu 16.04 编译环境

安装 clang 6.0 等依赖库

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main"
sudo apt-get update
sudo apt-get install -y clang-6.0
sudo apt-get install git build-essential pkg-config autoconf automake libtool bison flex libpq-dev pandoc
// 安装 postgresql
sudo apt-get install postgresql postgresql-contrib
加入环境变量
cd ~
sudo nano .profile
PATH=$PATH:/usr/lib/postgresql/5.9/bin

执行命令
. ~/.profile


git clone https://github.com/stellar/stellar-core.git
cd stellar-core
git submodule init
git submodule update
./autogen.sh
./configure (If configure complains about compiler versions, try CXX=clang-5.0 ./configure or CXX=g++-5 ./configure or similar, depending on your compiler.)
Type make or make -j (for aggressive parallel build)
Type make check to run tests.
Type make install to install.

记录一下目前现阶段比较火的数字货币,时间是2018-06-05
原文

1 比特币 (BTC)

2 以太坊(ETH)

Ethereum(以太坊)是有图灵完备的智能合约功能的公有区块链,开发人员能够在以太坊上建立和发布下一代分布式应用。Ethereum可以用来编程,还可以用来交易包括域名、合同、协议、知识产权还有硬件集成的智能资产在内的一切事物,同时囊括了金融交易,担保,众筹,投票等功能。

以太坊于2015年7月创立,当时年仅21岁的Vitalik Buterin革命性的将“智能合约”概念和区块链结合在一起,以太坊创立后如同坐上火箭一般迅速蹿升到圈内老二的位置。不过Vitalik Buterin并不满足于此,他组建了一个完整的开发团队,致力于继续开发以太坊平台。

3 瑞波币(XRP)

Ripple旨在提高金融交易的速度,特别是跨境交易。曾经向境外汇过款的人应该都知道,一次跨境汇款大概需要3-5个工作日才能完成,有可能你直接取现金坐飞机过去都比转账要快。而且跨境转账还会要收取高额的手续费,可能不同的银行不一样,但是应该都在6%左右。Ripple的目标就是加快跨境交易速度(交易清算只需4秒),降低交易的手续费。
瑞波币(XRP)和比特币一样都是基于数学和密码学的数字货币,但是与比特币没有真正的用途不同,XRP在Ripple系统中起到货币桥梁和保障安全的功能,其中保障安全的功能是不可或缺的,所以每个Ripple的使用者都必须持有XRP。

4 比特币现金(BCH)

比特币现金创建于2017年8月1日,是基于比特币原链的一个“硬分岔”。 由于比特币越来越受欢迎,比特币的网络瓶颈一直困扰着比特币。多年来,比特币社区一直在激烈争论是否要增加区块规模,以突破网络瓶颈。

由于无法达成协议,为了避免比特币原链受到影响,开发者们放弃了在比特币原链上直接修改,而是创建了一个新的区块链,新链允许开发者修改比特币最初的一些编程。

简单来说,比特币现金的原理是,通过增加区块的大小,使得新链可以在相同的时间内处理更多的事务。那些反对比特币现金的人认为,增加区块规模会增加存储和带宽需求,这会让普通用户付出更大的代价,还可能会导致集中化程度的增加,这和比特币去中心化的理念相悖。

5 柚子币(EOS)

EOS是区块链奇才 BM(Daniel Larimer)领导开发的类似操作系统的区块链架构平台。EOS的目标是解决以太坊面临的最大问题——可扩展性问题。作为潜在的“以太坊杀手”,EOS提出的改进措施非常有可能挑战以太坊为主导的智能合约平台。

EOS和以太坊一个更大的区别在于用户使用网络的方式。通过以太坊,用户每次进行修改或使用网络互动时都需要支付费用;而借助EOS,DAPP(分散式应用程序)的创建者可以直接支付账单,而用户不需要支付任何费用。如果有人告诉你每次发微博发朋友圈都要收费你会同意吗,当然不可能!所以站在用户的角度,EOS网络的模式其实更加合理。

除此之外,EOS在技术方面也有一些强于以太坊的地方,例如授权证明和其他协议更改。

6 莱特币(LTC)

莱特币受到了比特币(BTC)的启发,并且在技术上具有相同的实现原理,莱特币的创造和转让基于一种开源的加密协议,不受到任何机构的管理。莱特币旨在改进比特币,不同于比特币每10分钟才能处理一个区块,莱特币每处理一个区块只需要2.5分钟,因此可以更快的完成交易确认;而且莱特币在其工作量证明算法中使用了由Colin Percival首次提出的scrypt加密算法,这个算法的优点是用户可以使用普通计算机挖掘莱特币,而不需要像挖掘比特币一样组建矿机。每一个莱特币被分成100,000,000个更小的单位,通过八位小数来界定。

莱特币有时被称为“数字白银”,而比特币被称为“数字黄金”,从这外号上我们就能轻松的理解两者之间的不同,白银一般用于小型日常交易,而黄金则被作为财富储存,在日常生活中不常被使用。

7 Cardano(ADA)

卡尔达诺是一款专注于智能合约的区块链。它是由原以太坊团队成员Charles Hoskinson和Jeremy Wood等人以Input Output Hong Kong的名字发布的,后来更名为Cardano。

卡尔达诺团队正在努力解决加密货币世界长期以来一直存在的一些问题,例如可扩展性问题和民主化投票问题,如果能顺利解决,卡尔达诺未来可能会动摇以太坊在智能合约领域的统治地位。和以太坊一样,Cardano正在开发自己的编程语言,不仅如此,他们还注重于研究与其他加密货币之间的互操作性。

卡尔达诺是第一个从科学哲学为导向开发出来的区块链平台。卡尔达诺团队核心成员中学者与工程师居多,有很好的研究氛围,期待未来有一天他们能开发出一个完全开源的强大软件。

8 恒星币(XLM)

恒星币(Stellar)是一个由前瑞波币(Ripple)创始人Jed McCaleb发起的数字货币项目,用于搭建一个数字货币与法定货币之间传输的去中心化网关。恒星币供应上线为1000亿,其中95%的恒星币是免费发放给用户的。恒星是一个多元化的团队,董事会成员有包括前Square首席运营官Keith Rabois,Stripe首席执行官Patrick Collison,而顾问团队包括了狗狗币联合创始人Jackson Palmer以及Angellist联合创始人Naval Ravikant。

众所周知,比特币有时需要10-15分钟才能确认交易,每秒只能处理几笔交易,而交易费用则非常高。Stellar Lumens尝试利用区块链技术使国际支付速度更快,费用更低;Stellar Lumens目标建成的网络每秒可以处理数千次交易,只需3-5秒的确认时间。

有没有觉得听起来很像Ripple?没错! Stellar Lumens就是基于Ripple协议,而且做的也是一样的事情。两者的区别只在于Stellar Lumens的用途偏向于小额日常国际汇款和移动支付。

9 IOTA(MIOTA)

IOTA针对的是比特币和以太坊在POW(工作证明)和POI(重要证明)模型中遇到的许多问题,IOTA尝试建立了一个简称为“Tangle”的交易验证网络来解决这些问题。

在IOTA中发布交易时,用户只需要验证之前的两个交易,这意味着用户不需要再将验证外包给矿工,这种验证方式可以节约大量的算力和代币激励。

IOTA的用户越多,分类账越活跃,验证就越多。换句话说,使用它的人越多,IOTA的速度就越快,用户也就更不需要雇佣矿工,慢慢地交易成本就会越来越少直至降到零。

IOTA团队自2011年成立以来一直积极开发区块链技术,并于2016年成立了IOTA基金会和公司。自成立以来,团队不断发展壮大,吸引了来自世界各地的优秀人才。