比特币简单介绍

1. 比特币是什么

  • a.一个去中心化p2p分布式网络(比特币协议
  • b.一个去中心化的数学的和确定性的货币发行(分布式挖矿
  • c.一个公共的交易账簿(区块链
  • d. 一个去中心化的交易验证系统(交易脚本

2. 简述比特币完整交易流程?交易的基本单位是什么?

比特币交易的基本单位是未经使用的一个交易输出,简称UTXO

  • 1.创建交易

用户在发起交易支付比特币时,比特币所有者需要在交易中提交其公钥和签名。比特币网络中的所有人可以通过所提交的公钥和签名进行验证,并确认该交易是否有效,即确认支付者在该时刻对所交易的比特币拥有所有权。如果交易校验有效,当前的比特币交易会接入比特币网络,从而使之能被传送。

  • 2.交易广播

比特币交易是经过签名且不含任何机密信息、私钥或密码,因此可在任意网络环境下被发送。只要这笔交易可以到达能将它广播到比特币网络的比特币节点,这笔交易是如何被传输至第一个节点的并不重要。

  • 3.交易验证

一旦一笔比特币交易被发送到任意一个连接至比特币网络的节点,这笔交易将会被该节点验证。
如果交易被验证有效,该节点将会将这笔交易传播到这个节点所连接的其他节点;同时,交易发起者会收到一条表示交易有效并被接受的返回信息。如果这笔交易被验证为无效,这个节点会拒绝接受这笔交易且同时返回给交易发起者一条表示交易被拒绝的信息。

3. 请简述比特币环境下密钥、地址、钱包的关系。

比特币的所有权是通过数字密钥、比特币地址和数字签名来确立的。

钱包使用来存储和管理用户密钥的数据结构。

一个比特币钱包包含一系列的密钥对,每个密钥对包括一个私钥和一个公钥。

私钥(k)是一个数字,通常是随机选出的。有了私钥,可使用椭圆曲线乘法单向加密函数产生一个公钥(K);有了公钥(K),可以使用单向加密哈希函数生成比特币地址(A)。

4. 比特币标准交易类型有哪些?

  • P2PKH(Pay to Public Key Hash)

    P2PKH交易含有一个锁定脚本,该脚本由公钥哈希实现阻止输出功能,公钥哈希即为广为人知的比特币地址
    P2PKH脚本锁定的输出可以通过键入公钥和由相应私钥创设的数字签名得以解锁。

  • P2PK (Pay to Public Key)

    P2PK脚本模式中,公钥本身已经存储在锁定脚本中,而且代码长度也更短。
    P2PKH是由Satoshi创建的,主要目的一方面为使比特币地址更简短,另一方面也使之更方便使用。

  • P2SH (Pay to Script Hash)

    P2SH是一种能简化复杂交易脚本的交易类型,可用于简化复杂的多重签名脚本。在P2SH交易中,锁定脚本由哈希取代,哈希指代的是赎回脚本。在P2SH交易中,整个脚本可由仅为20个字节的密码哈希所取代,首先采用SH256哈希算法,随后对其运用RIPEMD160算法。同时,P2SH还能将脚本哈希编译为一个地址。

  • 多重签名

    多重签名脚本是指在脚本中的公钥总个数为N时,设置M(M<=N)为多重签名生效的公钥数阀值(最少数目)。对于一个M-N多重签名组合而言,存档公钥数为M个,至少同时使用其中M个或者M个以上的公钥时,才能生成激活交易的签名,通过验证后才可使用这笔资金。

5. 比特币使用的共识算法是什么?工作原理是什么?

  • 1.比特币:POW(proof of work)工作量证明

    比特币在区块生成过程中使用POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。
    要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。

  • 2.以太坊:POS (proof of stake)股权证明

    权益 证明 要求 用户 证明 拥有 某些 数量 的 货币( 即对 货币 的 权益)。

对于验证人/节点的奖励,不是通过算力挖矿,而是通过持币而产生利息,这里就要引入一个概念叫做—币龄,币龄=币量x持有天数。这是根据你持有货币的量和时间,给你发利息的一个制度。当你获得了利息以后,你的所有币龄将被清空,你的持币时间将从0重新算起。

  • 3.BTS/EOS:DPOS (delegated poof of stake) 委任权益证明

    又称委托人机制,基于PoS衍生出的更专业的解决方案,类似于董事会的投票机制,选举出n个记账节点,在节点中提案者提交的提案被这些记账节点投票决定谁是正确的。

  • 4.Fabric: PBFT (practical Byzantine fault tolerance) 实用拜占庭容错算法

    PBFT是一种基于严格数学证明的算法,需要经过三个阶段的信息交互和局部共识来达成最终的一致输出。可以证明,系统中只要有三分之二以上比例的正常节点,就能保证最终一定可以输出一致的共识结果,尽管达成共识的时间不确定。

6. 如何连接比特币网络?如何获取当前区块信息?关于钱包操作的API有哪些?

  • 1.可以运行比特币客户端,通过命令行访问JSON-PRC API接口进行交互。

  • 2.JSON-RPC接口使用方法

1
2
3
4
5
6
7
8
9
10
1. getblock         //根据区块哈希获取区块
2. getblockhash //根据区块高度获取区块
3. gettransaction //根据txid获取交易信息
4. encryptwallet //钱包加密
5. walletpassphrase //钱包解锁
6. backupwallet //钱包备份
7. importwallet //钱包导入
8. dumpwallet //钱包纯文本导出
9. getbalance //获取钱包交易余额