# Blockchain

By [zcool](https://paragraph.com/@zcool) · 2022-04-07

---

**保管私钥四原则**

1.断网隔离

这是最基本的操作，断网冷存，刻起来或纸笔写在哪里，不能让别人远程把你的私钥偷了。

2.物理隔离

也是基本操作，藏好了，做好你藏的那个地方只有你能打开，不能让别人靠近你就能偷了。

3.思维隔离

必要操作，你不能完整按照顺序抄写，要打乱，要少写一个，正确的顺序只有你自己知道。即使别人看到你的私钥或助记词，也偷不走，因为里面还有2的10次方的排列组合可能。同时，这里应该有报警功能，则别人看到你这个私钥或助记词的时候，你能第一时间知道。

4.认知隔离

则不要让别人知道你有币。

简单总结就是：别人无法远程偷走>别人近了也偷不走>别人看到也偷不走>别人根本就不知道你。

**钱包分类**

1.  Offchain 钱包（托管式）：如 币信钱包、Cobo 钱包等；
    
2.  Onchain软件钱包（自己保管私钥）：如 imToken、BitPie、TokenPocket 等；
    
3.  硬件钱包（自己保管私钥）：如 Trezor、Ledger、BitHD、Cobo Vault、OneKey 等。
    

**去中心化应用 (DApps)**

是在P2P网络上而非在一台独立的计算机中运行的应用程序。

区块链DApps至少是一个智能合约和一个web用户界面。区块链DApps是一个基于开放开源的，去中心化的，点对点架构服务的应用程序。 ​​​

**什么是智能合约？**

一个智能合约是一套以数字形式定义的约定，包括合约参与方可以在上面执行这些约定的协议。

”智能合约程序不只是一个可以自动执行的计算机程序：它自己就是一个系统参与者。

它对接收到的信息进行回应，它可以接收和储存价值，也可以向外发送信息和价值。这个程序就像一个可以被信任的人，可以临时保管资产，总是按照事先的规则执行操作。

**什么是 Keystore？**

Keystore 文件是钱包存储私钥的一种文件格式 (JSON)。

它使用用户自定义密码加密，以起到一定程度上的保护作用，而保护的程度取决于用户加密该钱包的密码强度。

Keystore 的密码是唯一、不可更改的，如果想更改钱包密码需要使用助记词或明文私钥重新导入钱包，并使用新密码加密，生成新的 Keystore。

**什么是软分叉？**

软分叉是指规则变更后，部署了新规则的节点仍能与未部署的节点互动。

以区块容量为例：假设原区块容量为2MB；从现在起，半数的网络节点实行区块容量为1MB的新限制，将过大区块视为无效。

旧版节点仍可接收或广播区块。在这种情况下，新网络可覆盖所有节点而不受规则版本的限制。

比特币的隔离见证（又称“SegWit”）是软分叉的例子之一。

此次分叉巧妙地引入区块和交易的新格式。未更新的节点可以继续接收区块信息，但不参与新交易的验证。

**什么是硬分叉？**

假设现在半数的网络节点想将区块容量从2MB扩大至3MB。如果将3MB区块发送至旧版节点，区块将被拒绝；因为旧版节点的规则明确表示，2MB是有效区块的上限。此时，新旧版网络不再兼容，区块链出现两个分支。

此时，网络协议有两种，各自使用不同的货币。所有账户的余额从原始记录中克隆到新链；用户若在分叉前拥有20BTC，将在两条支链上各拥有一个账户，余额分别为20BTC和20新BTC。

**闪电网络是什么？**

闪电网络是一种比特币扩容提议。它将交易从区块链中划分出来；全部交易记录在底层，由底层协议负责处理。

闪电网络能够实现近乎即时的资金转移且免费，吞吐量亦不受限制（只要用户有能力收发资金）。使用比特币闪电网络的方法是：两位参与者将一定数量的比特币锁定在一个特殊地址内；该地址有一个特性，即在双方同意的情况下才会解锁资金。

此时，双方便共享了一个私密账本；该账本可以自行分配余额而无需知会主链。交易完成后便可通知主链，由主链协议更新交易双方的余额。在这个过程中，交易双方亦无需相互信任。如果任意一方试图作弊，协议会自动检测出来并施予惩罚。

这样的支付渠道总共只要求用户进行两次链上交易：第一次是为地址充值，第二次是分发资金。因此，数千笔转账得以在两次交易之间进行。随着未来的开发和优化，第二层技术可能成为庞大区块链系统的关键组成。

**什么是多重签名钱包？**

多重签名是一种特定类型的数字签名，此类型的签名允许两个以上用户作为一组来签名。

加密货币背景下的多重签名技术，在2012年第一次被用于比特币地址。多重签名一般用于与安全问题有关的领域。

多重签名地址可设定其所需的密钥组合：最常见的就是三分之二（2/3），此类地址表示只需提供2个起签名就可以访问3签名地址中的资金。其实，还存在许多其他类型，如3/3（三分之三）、3/4（四分之三）等等。

**Passphrase是什么？**

Passphrase的主要目的是创建一个独立于原始助记词下的新钱包，并设置只有用户自己才知道的密语来进行保护。

Passphrase是由用户自己设置的单词或句子，区别于硬件钱包在首次使用时自动生成的初始助记词组-在BIP39协议下的标准词库中由算法随机选中的单词 ，Passphras是由用户个人设置并保存的，可以是任何单词或者字母的集合，甚至是句子。您可以将Passphrase密语视为硬件钱包的“附加词 （助记词+1）“功能。

设置了Passphrase，即使其他人同时知道了你的硬件钱包PIN码和原始助记词组，他人只能拿走你在硬件钱包非Passphrase下的资产，设置了Passphrase的钱包中的资产无法被盗走。

**硬件钱包到底触不触网？**

有用户咨询既然都说是冷钱包，怎么进行数据传输呢，不是不触网吗？

首先，我们要用硬件钱包收币和发币。收币就需要地址，并且得告诉外界你收币的地址是什么；发币呢，则需要先准备好未签名交易，然后硬件钱包对这个交易进行签名，最后再把签名之后的交易广播给区块链网络，发币操作才算完成。

因此，硬件钱包是需要数据传输的，否则你收不了币，也发不了币。

但是数据传输不代表钱包触网，他只是通过USB或者蓝牙等形式进行。

因为硬件钱包本身不触网，所以一般需要手机，电脑等进行使用。

**什么是助记词？**

助记码词汇是英文单词序列代表（编码）用作种子对应所确定性钱包的随机数。是明文私钥的另一种表现形式，最早是由 BIP39 提案提出，其目的是为了帮助用户记忆和抄写复杂的私钥。

助记词一般由12、15、18、21、24个单词构成，这些单词都取自一个固定词库，其生成顺序也是按照一定算法而来，所以用户没必要担心随便输入 12 个单词就会生成一个地址。

任何人得到了你的助记词，可以不费吹灰之力的夺走你的资产。所以用户在备份助记词之后，一定要注意三点:

*   尽可能采用物理介质备份，例如用笔抄在纸上等，尽可能不要采用截屏或者拍照之后放在联网的设备里，以防被黑客窃取；
    
*   多次验证备份的助记词是否正确，一旦抄错一两个单词，那么将对后续找回正确的助记词带来巨大的困难；
    
*   请妥善保管备份助记词，并建议备份多份，做好防盗防丢措施。
    

**助记码的创建过程是怎么样的？**

1.创造一个128到256位的随机顺序（熵）。

2.提出SHA256哈希前几位，就可以创造一个随机序列的校验和。

3.把校验和加在随机顺序的后面。

4.把顺序分解成11位的不同集合，并用这些集合去和一个预先已经定义的2048个单词字典做对应。

5.生成一个12至24个词的助记码。

**什么是非确定性钱包？**

在最早的一批比特币客户端中，钱包只是随机生成的私钥集合。这种类型的钱包被称作零型非确定钱包。

是随机生成的私钥集合的缺点就是如果你生成很多，你必须保存它们所有的副本。这就意味着这个钱包必须被经常性地备份。每一把钥匙都必须备份，否则一旦钱包不可访问时，钱包所控制的资金就付之东流。

这种情况直接与避免地址重复使用的原则相冲突——每个比特币地址只能用一次交易。地址通过关联多重交易和对方的地址重复使用会减少隐私。

非确定性钱包现在正在被确定性钱包替换，因为它们难以管理、备份以及导入。

**什么是确定性钱包？**

确定性钱包包含通过使用单项离散方程而可从公共的种子生成的私钥。

种子是随机生成的数字。这个数字也含有比如索引号码或者可生成私钥的“链码”。

在确定性钱包中，种子足够收回所有的已经产生的私钥，所以只用在初始创建时的一个简单备份就足以搞定。并且种子也足够让钱包输入或者输出。

这就很容易允许使用者的私钥在钱包之间轻松转移输入。一般我们现在用的硬件钱包都是确定性钱包，OneKey就是确定性钱包。

**什么是公钥？**

公钥是由私钥通过椭圆曲线算法计算得到。

这是不可逆转的过程。其反向运算，被称为“寻找离散对数”，是非常困难的，就像去试验所有可能的k值，即暴力搜索。

**什么是私钥？**

私钥是一个随机选出的数字。一个比特币地址中的所有资金的控制取决于相应私钥的所有权和控制权。

在比特币交易中，私钥用于生成支付比特币所必需的签名以证明资金的所有权。

私钥必须始终保持机密，因为一旦被泄露给第三方，相当于该私钥保护之下的比特币也拱手相让了。

私钥还必须进行备份，以防意外丢失，因为私钥一旦丢失就难以复原，其所保护的比特币也将永远丢失。

简单来说，用户自己都可以来生成新私钥，掷硬币256次，用纸和笔记录正反面并转换为0和1，随机得到的256位二进制数字就可以作为比特币钱包的私钥。 ​​​

**什么是Base58Check编码？**

为了更简洁方便地表示长串的数字，许多计算机系统会使用一种以数字和字母组成的大于十进制的表示法。

例如，传统的十进制计数系统使用0-9十个数字，而十六进制系统使用了额外的 A-F 六个字母。一个同样的数字，它的十六进制表示就会比十进制表示更短。

更进一步，Base64使用了26个小写字母、26个大写字母、10个数字以及两个符号（例如“+”和“/”），用于在电子邮件这样的基于文本的媒介中传输二进制数据。Base64通常用于编码邮件中的附件。

Base58是一种基于文本的二进制编码格式，用在比特币和其它的加密货币中。这种编码格式不仅实现了数据压缩，保持了易读性，还具有错误诊断功能。

Base58是Base64编码格式的子集，同样使用大小写字母和10个数字，但舍弃了一些容易错读和在特定字体中容易混淆的字符。

具体地，Base58不含Base64中的0（数字0）、O（大写字母o）、l（小写字母L）、I（大写字母i），以及“+”和“/”两个字符。

简而言之，Base58就是由不包括（0，O，l，I）的大小写字母和数字组成。

---

*Originally published on [zcool](https://paragraph.com/@zcool/blockchain)*
