├── .gitignore ├── .nojekyll ├── README.md ├── _coverpage.md ├── _navbar.md ├── app.css ├── index.html └── vue.css /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | -------------------------------------------------------------------------------- /.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TP-Lab/BlockchainGuideSeries/4b393e8fcfded1b9760e171db1c6f706a4036706/.nojekyll -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 区块链钱包发展史 2 | 3 | ``` 4 | 说起数字货币,就离不开数字货币钱包。比特币已诞生10年,区块链也经历了1.0 - 3.0三个时期的迭代。 5 | 在这期间钱包由单资产钱包、单链钱包发展为多链多资产钱包,从单一的转账收款钱包,发展为区块链生态服务平台。 6 | ``` 7 | 8 | 9 | ### 钱包1.0时期 10 | 11 | **(2009年 - 2013年)** 12 | 13 | 2009年,比特币主网上线,这个时期的区块链刚刚起步,作为一个巨大的分布式账本,比特币仅有简单的转账、记账功能。 14 | 15 | 受限于区块链的发展,这时的钱包就是用来存储比特币。**也就是单资产钱包形态,一个钱包只能支持一种币种。** 16 | 17 | > 2011年6月29日,比特币支付处理商BitPay推出了第一个用于智能手机的比特币电子钱包。同年7月6日,一个免费的比特币数字钱包App现身安卓应用商店,这是第一款与比特币相关的智能手机App。 18 | 19 | 20 | ### 钱包2.0时期 21 | 22 | **(2014年 - 2018年)** 23 | 24 | 2014年,以太坊项目启动宣示着区块链进入2.0时代,智能合约开始运用于区块链。 25 | 此时的钱包除了进行转账收款外,还能进行链上合约操作,但由于此时的区块链速度较慢,钱包仅能进行非瞬时反应合约服务。 26 | 27 | > 以太坊的出块速度为15秒,不考虑网络环境等问题,一个交易要被记录在区块链上,大概要15秒的时间。 28 | > 29 | > 智能合约就是一套不需要第三方的情况下还可以保证合同得到执行的计算机程序,任何人都可以基于此进行运算及开发应用层。 30 | 31 | 32 | ### 钱包3.0时期 33 | 34 | **(2018年 - 至今)** 35 | 36 | 37 | 2018年开始,针对区块链2.0速度慢、高昂矿工费等问题进行优化,实现区块链的高并发、高可拓展等性能标志着区块链进入3.0时期,而其中最为代表的便是EOS。 38 | 39 | > EOS的出块速度为0.5秒,不考虑网络环境等问题,一个交易被记录在区块链上,仅需0.5秒 40 | 41 | 42 | 此时的钱包,除了基础的存储转账功能外,还能与链上合约进行即时交互;钱包不再是简单的资产管理工具,更是一个公链生态服务平台;与此同时,单链钱包已无法满足用户需求,**越来越多的钱包往多链方向发展**。 43 | 现如今,用户通过钱包可体验资产管理、资产交易、DApp、社交、资讯、行情等功能。 44 | 45 | 钱包已逐渐承担起它作为区块链世界入口的⻆色。 46 | 47 | 48 | ## 区块链钱包的基本知识点 49 | 50 | ``` 51 | 要学会使用区块链钱包,一定要掌握以下五个相关名词定义,即公钥、私钥、助记词、Keystore、密码。 52 | ``` 53 | 54 | ### 公钥 55 | 56 | + 公钥=账号=转账地址,相当于你的银行卡号,公钥是可以对外随意公开的,没有任何风险,就像别人知道了你的银行卡号一样,除了给你转账啥也干不了。 57 | 58 | ### 私钥 59 | 60 | + 私钥=账号+密码=身份认证,相当于你的银行卡号+密码。私钥是由数字和大小写字母组成,不同区块链的私钥⻓度一般不一样。通过私钥可以推导出公钥。需要注意的是,一旦你的私钥丢失或遗忘,将无法再找回,所以一定要妥善保管好。 61 | 62 | ### 助记词 63 | 64 | + 由于私钥不方便记忆,因此出现了助记词,助记词只是私钥的另一种展现形式。一般由12或24个英文单词组成,为了方便国内用户,也有提供汉字版本助记词。只要你记住这些单词,按照顺序在钱包中输入,就能恢复钱包并且进行任意操作。如果别人拿到了你的助记词,就相当于拿到了你的私钥,就可以对你的资产进行掌控了。 65 | 66 | ### Keystore 67 | 68 | + Keystore=卡号,**Keystore的本质是加密后的私钥,Keystore必须配合你的钱包密码来使用才有效。** Keystore、私钥、助记词是所有钱包通用的,钱包服务商可能会因为产品设计原因,仅为用户提供其中一种或多种方式,但是如果存在同一方式在某钱包无法正常恢复,则该钱包可能存在一定的问题。 69 | 70 | ### 密码 71 | 72 | + 为了进一步增强安全性,大部分钱包会采取密码的方式对私钥做二次加密。每个钱包的加密方法和存储方式是不一样的。这也是为什么你使用钱包进行交易的时候,总需要进行授权,这背后其实涉及了钱包使用密码进行私钥解密,然后再使用私钥对交易进行签名等复杂的过程。 73 | 74 | ### 钱包安全小贴士 75 | 76 | > + 公钥是可以曝光的,对你的资产安全无影响。相当于你告诉人家你的银行卡账号一样。 77 | 78 | > + 助记词、私钥一旦泄露,资产将有很大风险被他人掌控,此时你需要立即转移资产到其他地址,原先的账户或地址不再使用。 79 | 80 | > + keystore泄露,不管密码有没有泄露,都存在他人掌控资产的⻛险,因此需要赶快把资产转移其他地址。 81 | 82 | > + 如果是EOSIO(包括EOS、BOS、WAX等)和IOST的账号私钥泄露时,还可以采取更换新私钥的方式,阻止他人掌控自己的资产。 83 | 84 | > + 在存储私钥、助记词时,我们都建议采用离线形式(手抄、打印等)进行数据备份,同时将备份好的内容妥善保管。对于keystore这样的信息,采用抄写进行备份是很不科学并且很容易出错的,所以用户可以将keystore存储为文件形式,然后可以将其存储在U盘中再妥善管理好U盘;其中,我们非常不建议您进行截屏、网络传输(QQ、微信)、云端存储等方式备份,这些方式都有可能遭遇黑客攻击,从而造成资产损失。 85 | 86 | 87 | ## 区块链钱包分类 88 | 89 | ``` 90 | 我们将从私钥的存储和私钥的生成两个方向对钱包进行分类。 91 | ``` 92 | 93 | ### 私钥存储 94 | 95 | 根据私钥的存储方式,即用户是否掌握了私钥,我们可以把钱包划分为,**“中心化钱包”“去中心化钱包”**。 96 | 97 | > 存储方式是指存在哪,只有用户持有私钥且导入钱包后,私钥仅存储在用户设备上的才叫“去中心化”,而无私钥,或者私钥有上传存储在服务商的服务器里的,则就是“中心化”。 98 | 99 | 去中心化钱包,我们又可根据私钥存储过程中是否接触网络,划分为**“冷钱包”**和**“热钱包”**;这里的接触网络是指,钱包是否联网了,而不是私钥是否在网络中传输的意思。 100 | 101 | 常见的热钱包有桌面钱包、手机钱包和网⻚钱包。而冷钱包一般是指纸钱包、硬件钱包这些不联网或无法联网的工具。 102 | 103 | ![钱包类别 示意图](https://tp-statics.tokenpocket.pro/news/tokenpocket-1576071056328.png "钱包类别") 104 | 105 | 根据钱包的去中心化程度又可将钱包分为全节点钱包、轻节点钱包、中心化钱包。 106 | 107 | 全节点钱包就是将区块链上所有数据同步到钱包,这样会占用很大的存储空间,所以大部分全节点钱包都是桌面钱包。其中最为代表有比特币核心钱包、Geth、Parity等等。正因为全节点钱包需要同步所有区块数据,所以其可以实现完全去中心化。 108 | 109 | > 根据DApptotal数据,截止到2019年9月份:以太坊的全节点数据大小为433GB,EOS的为430GB,而比特币为279GB 110 | 111 | 轻钱包就是依赖区块链网络中的其他全节点的钱包,比如TP钱包会运行一个全节点,同步所有数据,然后根据不同的钱包地址将数据进行划分,按需下发,这样用户便可以既快又方便的使用钱包。常见的手机钱包和网页钱包就是轻钱包。 112 | 113 | 去中心化钱包的数据都是区块链上的数据,而中心化钱包的数据则依赖钱包服务商自己的账本。举个例子,我们在交易所的钱包就是中心化钱包,我们往交易所指定的某个地址转账,然后交易所在自己的账本上记录了我们的充值记录,此后我们每做一次充值转账,交易所直接在他的账本上进行加或减。而这整个过程,完全没有发生在区块链上。 114 | 115 | ![节点钱包 示意图](https://tp-statics.tokenpocket.pro/news/tokenpocket-1576071528679.png "节点钱包") 116 | 117 | 118 | ### 私钥生成 119 | **(本小节内容稍微超纲)** 120 | 121 | 从私钥的生成,我们可以把钱包划分为,“非确定性钱包”、“确定性钱包”及“分层确定性钱包”,而其中“分层确定性钱包”是“确定性钱包”的加强版本。 122 | 123 | 124 | **非确定性钱包** 125 | 126 | 在钱包中生成的私钥之间没有任何关系,是相互独立的。 127 | 128 | ![非确定性钱包 示意图](https://tp-statics.tokenpocket.pro/news/tokenpocket-1576070497680.png "非确定性钱包") 129 | 130 | **确定性钱包** 131 | 132 | 私钥都是由一个“种子”通过算法生成,比如“助记词”就是种子的形式。通过这个方式生成的私钥,只要算法一致,私钥就可以保持前后一致;且一个种子可以派生出无限的私钥地址。 133 | 134 | ![确定性钱包 示意图](https://tp-statics.tokenpocket.pro/news/tokenpocket-1576070721576.png "确定性钱包") 135 | 136 | 137 | > 为了更好理解,我们可以“确定性钱包”比喻一根树枝,树枝上不同位置的叶子不同, 138 | > 但是只要你选择的位置一样,那个位置的叶子永远是同一片。而这里的叶子就是我们提到的“私钥”。 139 | 140 | **分层确定性钱包** 141 | 142 | 是确定性钱包的加强版,为确定性钱包引入“主私钥”概念,即HD钱包。它的层级结构是,从主私钥生成的私钥,本身就可以成为一把主私钥,再通过上述方法生成一个确定性钱包。 143 | 144 | ![分层确定性钱包 示意图](https://tp-statics.tokenpocket.pro/news/tokenpocket-1576070849616.png "分层确定性钱包") 145 | 146 | > 同样的,我们可以把“分层确定性钱包”比喻成树干; 147 | > 一个树干上有很多树枝,每一根树枝上的叶子都是确定的。 148 | > 所以,只要我们确定了某一树枝上的某一个位置,那这片叶子就是确定的。也就是私钥是确定的。 149 | 150 | 151 | ## 区块链钱包功能介绍 152 | 153 | 钱包是区块链的入口,拥有包含资产管理在内的丰富功能,可以满足用户各式各样的需求。 154 | 155 | ### 创建区块链账号 156 | 157 | 区块链钱包的展现形式分为地址和账号,我们这里统称为账号; 158 | 不同区块链的账号是不一样的,⻓度也可能不一样的。 159 | 不同区块链账号的创建费用也是不一样的,例如以太坊、比特币的账号是免费的,但是EOS的账号是需要消耗一定费用进行创建的。 160 | 161 | 由于区块链账号的创建是一个复杂的过程,钱包的存在就是帮助用户简化这些过程。 162 | 一般创建完账号过程中,钱包都会引导用户进行私钥或助记词备份,然后再进行二次验证,以确保用户备份的私钥或助记词准确无误。 163 | 而在需要通过支付创建账号的区块链上,钱包一般会帮助用户使用传统支付工具完成支付过程,以降低用户的使用难度。 164 | 165 | 对于小白用户来说,掌握私钥或许太麻烦了,因此TokenPocket基于EOS设计了去中心化的手机号/邮箱注册账号方式,这种方式支持用户在忘记私钥的时候通过验证码方式找回,和我们平常使用互联网产品一样,忘记密码就通过验证码登录,大大降低了用户使用钱包的难度。 166 | 167 | 168 | ### 数字资产管理 169 | 170 | **数字资产主要指的是区块链上的各种代币(Token)**,钱包的存在极大的方便了用户对于自己所拥有的资产管理,主要包括转账、收款、查看资产详情、交易详情等。 171 | 功能类似银行的APP,你可以看到自己当前拥有什么资产,数量多少,以及对你的资产进行转账等操作。 172 | 173 | > 需要注意的是,不同区块链之间的资产是不能直接转账的,即你无法向以太坊账号转入BTC(比特币),也无法向比特币账号转入ETH(以太坊)。 174 | 175 | ### 数字资产交易 176 | 177 | 当前钱包支持的数字资产交易主要包括以下三种情况:币币兑换、交易所交易、OTC交易。 178 | 179 | **币币兑换** 180 | 181 | 通过币币兑换,可以将不同区块链上的资产进行兑换,例如你可以将自己拥有的BTC(比特币)直接兑换成EOS。 182 | 183 | > 一般的交易只能通过一个基本对的形式进行交易,再通过基本对交易成最终目的币。 184 | > 例如我要从A换成C,则需要通过中介B实现,A -> B, B -> C; 185 | > 而币币兑换则简化这个过程,直接将A兑换成C 186 | 187 | **交易所交易** 188 | 189 | 当前交易所有 3 种形态,分别是中心化交易所、去中心化交易所、聚合交易所 。 190 | 中心化交易所常⻅的有火币、币安、OKEX等。去中心化交易所有如以太坊上的IDEX,EOS上NewDex、鲸交所、DEXEOS等。 191 | 192 | > 中心化交易所需要我们把币托管在交易所账户里,然后交易仅发生在交易所的中心化数据中。 193 | > 而去中心化交易所则无需这个过程。 194 | > 这大大降低了交易所被盗或跑路导致用户资产损失的⻛险。 195 | > 去中心化交易所,用户通过钱包将币往智能合约转账,智能合约完成链上撮合交易,再将币转回给用户。 196 | > 合约交易,在提升透明度的同时,也大大减少了对中心媒介的依赖。 197 | 198 | 199 | ### 参与生态建设 200 | 201 | 目前部分公链设计中,都激励生态中的用户积极参与公链生态建设。主要的形式有**节点投票、公投、Staking等**。 202 | 203 | **节点投票** 204 | 以EOS为例,EOS总共有21个超级节点,用户通过将手中的EOS进行抵押后,最多可以投给30个节点,投票的目的在于让用户选出能为生态发展与贡献自己力量的节点,从而推动生态的稳定发展。 205 | 206 | **公投** 207 | 公投指的是区块链生态中,参与者可以发起自己认为对社区有利的提案,并由整个区块链持币者进行投票,当投票数超过一定标准时,提案自动生效。公投的方式有利于社区用户积极参与区块链治理。 208 | 209 | **Staking** 210 | Staking中文名权益质押,目前部分公链采取Staking的形式来鼓励持币者质押token,并以此产生稳定节点。如COSMOS质押可以使质押者获得一定的年化收益(以质押币结算),类似你在银行投了一个活期理财。 211 | 212 | ### 体验DApp应用 213 | 214 | DApp是Decentralized Application的缩写,译为去中心化应用,指的是以区块链为底层进行应用开发。 215 | 216 | 目前DApp主要集中在以太坊和EOS、TRON、IOST等区块链上。DApp与底层平台的关系,就好比APP与iOS和Android系统的关系。 217 | 218 | 例如EOS的DApp无法在ETH底层上运行,正如安卓的APP无法在iOS系统上运行。你可以在钱包中体验ETH上的去中心化金融MakerDAO,体验在EOSRacing中开赛⻋赢取EOS奖励,也可以在IOST上的猎币矿池进行挖矿理财。 219 | 220 | 221 | 目前一些大型游戏是以第三方独立APP的形式存在,当体验这些APP形式的DApp时,你同样需要钱包作为登录和交易授权的媒介。 222 | 223 | ![DApp商店 示意图](https://tp-statics.tokenpocket.pro/news/tokenpocket-1576074058171.png "DApp商店") 224 | 225 | > 目前TokenPocket支持EOS三国、EOSKnights、EOS加密骑士团、加密剑与魔法、CryptoLegends等多个热⻔游戏。并且为了免去用户体验DApp时,来回切换钱包的繁琐操作,TP研发了MiniWallet模式,用户开启MiniWallet模式后,仅需一次授权操作后,即可一直停留在游戏中进行娱乐。 226 | 227 | ### 资产增值 228 | 229 | 钱包天然就具有金融属性,当前钱包已经集合了包括**矿池、理财、挖矿、项目投资**等多种金融工具与功能,可以满足用户资产增值的需求。 230 | 231 | **矿池: ** 232 | 当前挖矿主要是PoW挖矿与PoS挖矿这 2 种方式。 233 | PoW(Proof of Work)就是算力挖矿,也是我们熟悉的BTC(比特币)挖矿; PoS(Proof of Stake)挖矿是模仿 PoW 算力挖矿,持币人可以将代币抵押给验证人节点,来获得奖励分红。 234 | 235 | > 目前钱包的矿池基本上是以PoS挖矿为主。也有部分钱包支持购买云算力,进行BTC(比特币)挖矿。 236 | 237 | **理财: ** 238 | 钱包里的理财产品与传统理财产品十分相似,唯一不同的是结算的方式。通常会约定一个预估收益率,用户用Token购买该理财产品后,根据约定的结算日期进行定期结算,到期可以取回或续约。 239 | 240 | **挖矿: ** 241 | 挖矿以DApp挖矿为主,钱包中集合了一些DApp矿机产品,使用矿机可以便捷快速的获得想挖的Token。以最近大火的EIDOS为例,EIDOS矿机可以帮助用户实现自动转账挖矿。这些挖出来的Token可以拿去交易所卖出换成EOS从而获取收益。 242 | 243 | **项目投资: ** 244 | 以⻁符钱包的HOO Labs为例,你可以在上面使用USDT支持项目,并以支持USDT的数量按照一定比例获得项目的Token。 245 | 246 | ### 社交 247 | 248 | 249 | 部分区块链钱包还拥有社交功能,你可以在钱包里跟其他用户进行沟通与交流。如TokenPocket和块信的聊天频道,你可以加入不同的群,与群内成员自由交谈。并且还可以在聊天群里收发数字货币红包。 250 | 251 | 以社交作为主打功能的钱包Sense.Chat,允许你在APP上与其他成员自由聊天,所有的聊天信息都是加密的,只有你和联系人之间才能解密信息。此外MIXIN也是一个以聊天为主要功能的钱包。 252 | 253 | Trybe是一个由数字货币激励的社交网络和媒体发布社区,用户通过创建精美的内容,对他人的内容进行评级或邀请朋友,都可以获得Trybe送出的数字货币! 254 | 255 | 256 | ### 硬件钱包配套管理工具 257 | 258 | 硬件钱包通常会搭配一个软件钱包作为管理工具。硬件钱包厂商如Ledger、Trezor、库神、YubiKey等,都有研发自己配套的软件钱包。 259 | 260 | 同样的,软件钱包厂商也会与硬件钱包厂商合作,开发自己产品专属的硬件钱包,如比特派的硬件钱包比特盾、imToken的imKey等。 261 | 262 | ### 区块链资讯获取 263 | 264 | 绝大多数钱包用户都有交易需求,因此通常钱包都会把Token行情融入到产品中。除此外,还会把快讯、文章、甚至项目推特等这些内容模块加到产品中。 265 | 266 | 与其他区块链媒体不同的是,钱包快讯、文章方面则主要以当前钱包支持的区块链相关内容为主,更有针对性。 267 | 268 | ## 如何选择区块链钱包 269 | 270 | ``` 271 | 首先我们需要了解中心化钱包和去心化钱包区别,再结合自身需求进行选择。 272 | ``` 273 | 274 | 275 | | **中心化钱包** | **去中心化钱包** | 276 | | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | 277 | | 私钥由平台方掌控 | 私钥由用户掌控 | 278 | | 资产存储在平台方的钱包 | 资产存储在用户的钱包 | 279 | | 密码可找回 | 密码不可找回 | 280 | | 转账需要平台审核 | 转账不需要平台审核 | 281 | | 中心化账号在其他钱包平台不可用 | 去中心化账号在其他钱包通用 | 282 | | 平台内部转账无手续费,资产提现有手续费 | 资产转账仅需支付区块链网络费用 | 283 | | 平台丢币风险来源:平台方钱包被黑客攻击、服务器被攻击、运营商倒闭(钱包服务关闭)、运营商作弊 | 钱包丢币风险来源:私钥泄漏与遗忘、私钥未备份、安装钱包的设备丢失(手机、电脑)、安装了木马钱包 | 284 | 285 | ## 区块链钱包导航 286 | 287 | ### 去中心化钱包 288 | 289 | 290 | 291 |
292 | 293 | 294 | 295 |
296 |
TokenPocket
297 |

https://www.tokenpocket.pro

298 |
299 |
300 | 301 | 302 | 303 | 304 | 305 |
306 |
Trust Wallet
307 |

https://www.trustwallet.com

308 |
309 |
310 |
311 | 312 | 313 | 314 |
315 | 316 | 317 | 318 |
319 |
Bitpie
320 |

https://bitpie.com

321 |
322 |
323 | 324 | 325 | 326 | 327 | 328 |
329 |
imToken
330 |

https://token.im

331 |
332 |
333 |
334 | 335 | 336 | 337 |
338 | 339 | 340 | 341 |
342 |
Huobi Wallet
343 |

https://www.huobiwallet.com

344 |
345 |
346 | 347 | 348 | 349 | 350 | 351 |
352 |
AToken
353 |

https://www.atoken.com

354 |
355 |
356 |
357 | 358 | 359 | 360 |
361 | 362 | 363 | 364 |
365 |
BPEAL Wallet
366 |

https://www.bepal.pro

367 |
368 |
369 | 370 | 371 | 372 | 373 | 374 |
375 |
Starteos
376 |

https://www.starteos.io

377 |
378 |
379 |
380 | 381 | 382 | 383 |
384 | 385 | 386 | 387 |
388 |
BitKeep
389 |

https://www.bitkeep.com

390 |
391 |
392 | 393 | 394 | 395 | 396 | 397 |
398 |
MEET.ONE
399 |

https://www.meet.one

400 |
401 |
402 |
403 | 404 | 405 | 406 |
407 | 408 | 409 | 410 |
411 |
Tronlink
412 |

https://www.tronlink.org

413 |
414 |
415 | 416 | 417 | 418 | 419 | 420 |
421 |
Lynx
422 |

https://lynxwallet.io

423 |
424 |
425 |
426 | 427 | 428 | 429 |
430 | 431 | 432 | 433 |
434 |
Scatter
435 |

https://get-scatter.com

436 |
437 |
438 | 439 | 440 | 441 | 442 | 443 |
444 |
MetaMask
445 |

https://metamask.io

446 |
447 |
448 |
449 | 450 | 451 | 452 |
453 | 454 | 455 | 456 |
457 |
ENJIN Wallet
458 |

https://enjin.io/products/wallet

459 |
460 |
461 | 462 | 463 | 464 | 465 | 466 |
467 |
jaxx wallet
468 |

https://jaxx.io

469 |
470 |
471 |
472 | 473 | 474 |
475 | 476 | 477 | 478 |
479 |
块信
480 |

https://chattle.vip

481 |
482 |
483 | 484 | 485 | 486 | 487 | 488 |
489 |
KCASH
490 |

https://www.kcash.com

491 |
492 |
493 |
494 | 495 | 496 | 497 |
498 | 499 | 500 | 501 |
502 |
Coinbase Wallet
503 |

https://www.coinbase.com

504 |
505 |
506 | 507 | 508 | 509 | 514 | 515 |
516 | 517 | ### 中心化钱包 518 | 519 | 520 | 521 |
522 | 523 | 524 | 525 |
526 |
币信
527 |

https://bixin.com

528 |
529 |
530 | 531 | 532 | 533 | 534 | 535 |
536 |
Edge
537 |

https://edge.app

538 |
539 |
540 |
541 | 542 | 543 | 544 |
545 | 546 | 547 | 548 | 549 | 550 |
551 |
Uphold
552 |

https://uphold.com

553 |
554 |
555 | 556 | 557 | 558 | 562 | 563 | 564 | 565 |
566 | 567 | ### 硬件钱包 568 | 569 | 570 | 571 |
572 | 573 | 574 | 575 |
576 |
Ledger
577 |

https://www.ledger.com

578 |
579 |
580 | 581 | 582 | 583 | 584 | 585 |
586 |
Trezor
587 |

https://www.trezor.io

588 |
589 |
590 |
591 | 592 | 593 | 594 |
595 | 596 | 597 | 598 |
599 |
keep key
600 |

https://shapeshift.io/keepkey

601 |
602 |
603 | 604 | 605 | 606 | 607 | 608 |
609 |
库神(ColdLar)
610 |

https://www.coldlar.com

611 |
612 |
613 |
614 | 615 | 616 | 617 |
618 | 619 | 620 | 621 |
622 |
比特护盾(BITHD)
623 |

https://bithd.com

624 |
625 |
626 | 627 | 628 | 629 | 630 | 631 |
632 |
imKey
633 |

https://imkey.im

634 |
635 |
636 |
637 | 638 | 639 | 640 |
641 | 642 | 643 | 644 |
645 |
Cobo金库
646 |

https://cobo.com

647 |
648 |
649 | 650 | 651 | 652 | 653 | 654 |
655 |
BEPAL Pro S
656 |

https://www.bepal.pro/bepal-q

657 |
658 |
659 |
660 | 661 | 662 | 663 |
664 | 665 | 666 | 667 |
668 |
华特钱包
669 |

https://www.orientwalt.com

670 |
671 |
672 | 673 | 674 | 675 | 676 | 677 |
678 |
SafePal
679 |

https://safepal.io/

680 |
681 |
682 |
683 | 684 | 685 | 686 | ### 中心化&去中心化 687 | 688 | 689 | 690 |
691 | 692 | 693 | 694 |
695 |
Cobo
696 |

https://cobo.com

697 |
698 |
699 | 700 | 701 | 702 | 703 | 704 |
705 |
库神
706 |

https://www.coldlar.com

707 |
708 |
709 |
710 | 711 | 712 | 713 |
714 | 715 | 716 | 717 |
718 |
虎符
719 |

https://hoo.com

720 |
721 |
722 | 723 | 724 | 725 | 726 | 727 |
728 |
RenrenBit
729 |

https://www.renrenbit.com

730 |
731 |
732 |
733 | 734 | 735 | 736 |
737 | 738 | 739 | 740 |
741 |
HyperPay
742 |

http://www.hyperpay.tech

743 |
744 |
745 | 746 | 747 | 748 | 749 | 750 |
751 |
Math Wallet
752 |

http://www.mathwallet.org

753 |
754 |
755 |
756 | 757 | ## 区块链钱包操作指南 758 | 759 | 请在TokenPocket钱包官网帮助中心了解 760 | 761 | 网址:https://help.tokenpocket.pro/cn/ 762 | 763 | 764 | 765 | ## 区块链钱包知识自测 766 | 767 | 768 | ``` 769 | 学习自检时间到了,以下有 100 道关于 770 | 区块链钱包的问题,你能答对吗? 771 | ``` 772 | 773 | 774 |
775 |
扫码自测
776 | 777 |
778 | 779 | 780 | 781 | 782 | 783 | ### 联系我们 784 | 785 | **Telegram:** https://t.me/tokenPocket_en 786 | 787 | **Email :** service@tokenpocket.pro 788 | 789 | 790 | ### 版权申明 791 | 792 | #### 《区块链钱包从入门到精通》,又称为钱包小白书。由TokenPocket钱包联合创始人Marcus主编,内容涵盖钱包发展史、钱包功能及钱包分类等八大板块,是目前市面上最为详细的数字钱包科普资料之一。Marcus,毕业于华南理工大学,TokenPocket钱包联合创始人兼CMO,一年时间带领TokenPocket钱包从0发展到百万用户。原迅雷高级开发工程师,2019年被聘为韩国知名区块链投资机构 Hashed Labs 市场顾问。 793 | 794 | ##### 1.本文版权归TokenPocket所有。 795 | 796 | ##### 2.在征得作者同意的情况下,作品允许非盈利性引用,需要注明并请注明出处和作者,以尊重作者的劳动成果。 797 | 798 | ##### 3.出处:https://tp-lab.github.io/BlockchainGuideSeries/#/ 作者:TokenPocket。 799 | 800 | ##### 4.未经允许,严禁转载。对非法转载者,TokenPocket和作/译者保留采用法律手段追究的权利。 801 | 802 | ##### 5.对于本文和本声明以及其修改权、更新权及最终解释权均属TokenPocket。 803 | 804 | ##### 6.以上声明的解释权归“TokenPocket”所有。 805 | -------------------------------------------------------------------------------- /_coverpage.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ![](https://tp-statics.tokenpocket.pro/logo/blockchain-pc-zh.png) -------------------------------------------------------------------------------- /_navbar.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app.css: -------------------------------------------------------------------------------- 1 | .tp-main { 2 | display: flex; 3 | width: 100%; 4 | } 5 | 6 | .tp-custom { 7 | display: flex; 8 | flex: 1; 9 | align-items: center; 10 | padding: 15px; 11 | background: #fff; 12 | margin-top: 10px !important; 13 | margin-bottom: 10px !important; 14 | cursor: pointer; 15 | transition: all .3s; 16 | border: 1px solid #f1f1f1; 17 | text-decoration: none; 18 | } 19 | 20 | .tp-custom:first-child { 21 | margin-right: 20px; 22 | } 23 | 24 | .tp-custom:hover { 25 | transform: translateY(-6px); 26 | box-shadow: 0px 1px 2px 1px #efefef; 27 | } 28 | 29 | .tp-logo { 30 | width: 50px; 31 | height: 50px; 32 | margin-right: 20px; 33 | background: #fff; 34 | box-shadow: 0px 1px 1px 2px #efefef; 35 | border-radius: 10px; 36 | } 37 | 38 | .tp-content h5 { 39 | margin: 0; 40 | color: #101010; 41 | font-weight: 500; 42 | font-size: 20px; 43 | line-height: normal; 44 | } 45 | 46 | .tp-content p { 47 | margin: 0; 48 | color: #2980fe; 49 | line-height: normal; 50 | } 51 | 52 | .has-mask .mask { 53 | opacity: 0 !important; 54 | } 55 | 56 | 57 | @media screen and (max-width: 767px) { 58 | .tp-main { 59 | display: block; 60 | } 61 | 62 | .tp-custom:first-child { 63 | margin-right: 0; 64 | } 65 | 66 | .ask-code { 67 | text-align: center; 68 | } 69 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 区块链钱包从入门到精通 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 37 | 38 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /vue.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Roboto+Mono|Source+Sans+Pro:300,400,600'); 2 | 3 | * { 4 | -webkit-font-smoothing: antialiased; 5 | -webkit-overflow-scrolling: touch; 6 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 7 | -webkit-text-size-adjust: none; 8 | -webkit-touch-callout: none; 9 | box-sizing: border-box; 10 | } 11 | 12 | body:not(.ready) { 13 | overflow: hidden; 14 | } 15 | 16 | body:not(.ready) .app-nav, 17 | body:not(.ready) > nav, 18 | body:not(.ready) [data-cloak] { 19 | display: none; 20 | } 21 | 22 | div#app { 23 | font-size: 30px; 24 | font-weight: lighter; 25 | margin: 40vh auto; 26 | text-align: center; 27 | } 28 | 29 | div#app:empty:before { 30 | content: 'Loading...'; 31 | } 32 | 33 | .emoji { 34 | height: 1.2rem; 35 | vertical-align: middle; 36 | } 37 | 38 | .progress { 39 | background-color: var(--theme-color, #42b983); 40 | height: 2px; 41 | left: 0; 42 | position: fixed; 43 | right: 0; 44 | top: 0; 45 | transition: width 0.2s, opacity 0.4s; 46 | width: 0; 47 | z-index: 999999; 48 | } 49 | 50 | .search .search-keyword, 51 | .search a:hover { 52 | color: var(--theme-color, #42b983); 53 | } 54 | 55 | .search .search-keyword { 56 | font-style: normal; 57 | font-weight: 700; 58 | } 59 | 60 | body, 61 | html { 62 | height: 100%; 63 | } 64 | 65 | body { 66 | -moz-osx-font-smoothing: grayscale; 67 | -webkit-font-smoothing: antialiased; 68 | color: #34495e; 69 | font-family: Source Sans Pro, Helvetica Neue, Arial, sans-serif; 70 | font-size: 15px; 71 | letter-spacing: 0; 72 | margin: 0; 73 | overflow-x: hidden; 74 | } 75 | 76 | img { 77 | max-width: 100%; 78 | } 79 | 80 | a[disabled] { 81 | cursor: not-allowed; 82 | opacity: 0.6; 83 | } 84 | 85 | kbd { 86 | border: 1px solid #ccc; 87 | border-radius: 3px; 88 | display: inline-block; 89 | font-size: 12px !important; 90 | line-height: 12px; 91 | margin-bottom: 3px; 92 | padding: 3px 5px; 93 | vertical-align: middle; 94 | } 95 | 96 | li input[type='checkbox'] { 97 | margin: 0 0.2em 0.25em 0; 98 | vertical-align: middle; 99 | } 100 | 101 | .app-nav { 102 | margin: 25px 60px 0 0; 103 | position: absolute; 104 | right: 0; 105 | text-align: right; 106 | z-index: 10; 107 | } 108 | 109 | .app-nav.no-badge { 110 | margin-right: 25px; 111 | } 112 | 113 | .app-nav p { 114 | margin: 0; 115 | } 116 | 117 | .app-nav > a { 118 | margin: 0 1rem; 119 | padding: 5px 0; 120 | } 121 | 122 | .app-nav li, 123 | .app-nav ul { 124 | display: inline-block; 125 | list-style: none; 126 | margin: 0; 127 | } 128 | 129 | .app-nav a { 130 | color: inherit; 131 | font-size: 16px; 132 | text-decoration: none; 133 | transition: color 0.3s; 134 | } 135 | 136 | .app-nav a.active, 137 | .app-nav a:hover { 138 | color: var(--theme-color, #42b983); 139 | } 140 | 141 | .app-nav a.active { 142 | border-bottom: 2px solid var(--theme-color, #42b983); 143 | } 144 | 145 | .app-nav li { 146 | display: inline-block; 147 | margin: 0 1rem; 148 | padding: 5px 0; 149 | position: relative; 150 | cursor: pointer; 151 | } 152 | 153 | .app-nav li ul { 154 | background-color: #fff; 155 | border: 1px solid; 156 | border-color: #ddd #ddd #ccc; 157 | border-radius: 4px; 158 | box-sizing: border-box; 159 | display: none; 160 | max-height: calc(100vh - 61px); 161 | overflow-y: auto; 162 | padding: 10px 0; 163 | position: absolute; 164 | right: -15px; 165 | text-align: left; 166 | top: 100%; 167 | white-space: nowrap; 168 | } 169 | 170 | .app-nav li ul li { 171 | display: block; 172 | font-size: 14px; 173 | line-height: 1rem; 174 | margin: 8px 14px; 175 | white-space: nowrap; 176 | } 177 | 178 | .app-nav li ul a { 179 | display: block; 180 | font-size: inherit; 181 | margin: 0; 182 | padding: 0; 183 | } 184 | 185 | .app-nav li ul a.active { 186 | border-bottom: 0; 187 | } 188 | 189 | .app-nav li:hover ul { 190 | display: block; 191 | } 192 | 193 | .github-corner { 194 | border-bottom: 0; 195 | position: fixed; 196 | right: 0; 197 | text-decoration: none; 198 | top: 0; 199 | z-index: 1; 200 | } 201 | 202 | .github-corner:hover .octo-arm { 203 | -webkit-animation: octocat-wave 0.56s ease-in-out; 204 | animation: octocat-wave 0.56s ease-in-out; 205 | } 206 | 207 | .github-corner svg { 208 | color: #fff; 209 | fill: var(--theme-color, #42b983); 210 | height: 80px; 211 | width: 80px; 212 | } 213 | 214 | main { 215 | display: block; 216 | position: relative; 217 | width: 100vw; 218 | height: 100%; 219 | z-index: 0; 220 | } 221 | 222 | main.hidden { 223 | display: none; 224 | } 225 | 226 | .anchor { 227 | display: inline-block; 228 | text-decoration: none; 229 | transition: all 0.3s; 230 | } 231 | 232 | .anchor span { 233 | color: #34495e; 234 | } 235 | 236 | .anchor:hover { 237 | text-decoration: underline; 238 | } 239 | 240 | .sidebar { 241 | border-right: 1px solid rgba(0, 0, 0, 0.07); 242 | overflow-y: auto; 243 | padding: 40px 0 0; 244 | position: absolute; 245 | top: 0; 246 | bottom: 0; 247 | left: 0; 248 | transition: transform 0.25s ease-out; 249 | width: 300px; 250 | z-index: 20; 251 | } 252 | 253 | .sidebar > h1 { 254 | margin: 0 auto 1rem; 255 | font-size: 1.5rem; 256 | font-weight: 300; 257 | text-align: center; 258 | } 259 | 260 | .sidebar > h1 a { 261 | color: inherit; 262 | text-decoration: none; 263 | } 264 | 265 | .sidebar > h1 .app-nav { 266 | display: block; 267 | position: static; 268 | } 269 | 270 | .sidebar .sidebar-nav { 271 | line-height: 2em; 272 | padding-bottom: 40px; 273 | } 274 | 275 | .sidebar li.collapse .app-sub-sidebar { 276 | display: none; 277 | } 278 | 279 | .sidebar ul { 280 | margin: 0 0 0 15px; 281 | padding: 0; 282 | } 283 | 284 | .sidebar li > p { 285 | font-weight: 700; 286 | margin: 0; 287 | } 288 | 289 | .sidebar ul, 290 | .sidebar ul li { 291 | list-style: none; 292 | } 293 | 294 | .sidebar ul li a { 295 | border-bottom: none; 296 | display: block; 297 | } 298 | 299 | .sidebar ul li ul { 300 | padding-left: 20px; 301 | } 302 | 303 | .sidebar::-webkit-scrollbar { 304 | width: 4px; 305 | } 306 | 307 | .sidebar::-webkit-scrollbar-thumb { 308 | background: transparent; 309 | border-radius: 4px; 310 | } 311 | 312 | .sidebar:hover::-webkit-scrollbar-thumb { 313 | background: hsla(0, 0%, 53.3%, 0.4); 314 | } 315 | 316 | .sidebar:hover::-webkit-scrollbar-track { 317 | background: hsla(0, 0%, 53.3%, 0.1); 318 | } 319 | 320 | .sidebar-toggle { 321 | background-color: transparent; 322 | background-color: hsla(0, 0%, 100%, 0.8); 323 | border: 0; 324 | outline: none; 325 | padding: 10px; 326 | position: absolute; 327 | bottom: 0; 328 | left: 0; 329 | text-align: center; 330 | transition: opacity 0.3s; 331 | width: 284px; 332 | z-index: 30; 333 | cursor: pointer; 334 | } 335 | 336 | .sidebar-toggle:hover .sidebar-toggle-button { 337 | opacity: 0.4; 338 | } 339 | 340 | .sidebar-toggle span { 341 | background-color: var(--theme-color, #42b983); 342 | display: block; 343 | margin-bottom: 4px; 344 | width: 16px; 345 | height: 2px; 346 | } 347 | 348 | body.sticky .sidebar, 349 | body.sticky .sidebar-toggle { 350 | position: fixed; 351 | } 352 | 353 | .content { 354 | padding-top: 60px; 355 | position: absolute; 356 | top: 0; 357 | right: 0; 358 | bottom: 0; 359 | left: 300px; 360 | transition: left 0.25s ease; 361 | } 362 | 363 | .markdown-section { 364 | margin: 0 auto; 365 | max-width: 80%; 366 | padding: 30px 15px 40px; 367 | position: relative; 368 | } 369 | 370 | .markdown-section > * { 371 | box-sizing: border-box; 372 | font-size: inherit; 373 | } 374 | 375 | .markdown-section > :first-child { 376 | margin-top: 0 !important; 377 | } 378 | 379 | .markdown-section hr { 380 | border: none; 381 | border-bottom: 1px solid #eee; 382 | margin: 2em 0; 383 | } 384 | 385 | .markdown-section iframe { 386 | border: 1px solid #eee; 387 | width: 1px; 388 | min-width: 100%; 389 | } 390 | 391 | .markdown-section table { 392 | border-collapse: collapse; 393 | border-spacing: 0; 394 | display: block; 395 | margin-bottom: 1rem; 396 | overflow: auto; 397 | width: 100%; 398 | } 399 | 400 | .markdown-section th { 401 | font-weight: 700; 402 | } 403 | 404 | .markdown-section td, 405 | .markdown-section th { 406 | border: 1px solid #ddd; 407 | padding: 6px 13px; 408 | } 409 | 410 | .markdown-section tr { 411 | border-top: 1px solid #ccc; 412 | } 413 | 414 | .markdown-section p.tip, 415 | .markdown-section tr:nth-child(2n) { 416 | background-color: #f8f8f8; 417 | } 418 | 419 | .markdown-section p.tip { 420 | border-bottom-right-radius: 2px; 421 | border-left: 4px solid #f66; 422 | border-top-right-radius: 2px; 423 | margin: 2em 0; 424 | padding: 12px 24px 12px 30px; 425 | position: relative; 426 | } 427 | 428 | .markdown-section p.tip:before { 429 | background-color: #f66; 430 | border-radius: 100%; 431 | color: #fff; 432 | content: '!'; 433 | font-family: Dosis, Source Sans Pro, Helvetica Neue, Arial, sans-serif; 434 | font-size: 14px; 435 | font-weight: 700; 436 | left: -12px; 437 | line-height: 20px; 438 | position: absolute; 439 | height: 20px; 440 | width: 20px; 441 | text-align: center; 442 | top: 14px; 443 | } 444 | 445 | .markdown-section p.tip code { 446 | background-color: #efefef; 447 | } 448 | 449 | .markdown-section p.tip em { 450 | color: #34495e; 451 | } 452 | 453 | .markdown-section p.warn { 454 | background: rgba(66, 185, 131, 0.1); 455 | border-radius: 2px; 456 | padding: 1rem; 457 | } 458 | 459 | .markdown-section ul.task-list > li { 460 | list-style-type: none; 461 | } 462 | 463 | body.close .sidebar { 464 | transform: translateX(-300px); 465 | } 466 | 467 | body.close .sidebar-toggle { 468 | width: auto; 469 | } 470 | 471 | body.close .content { 472 | left: 0; 473 | } 474 | 475 | @media print { 476 | .app-nav, 477 | .github-corner, 478 | .sidebar, 479 | .sidebar-toggle { 480 | display: none; 481 | } 482 | } 483 | 484 | @media screen and (max-width: 768px) { 485 | .github-corner, 486 | .sidebar, 487 | .sidebar-toggle { 488 | position: fixed; 489 | } 490 | 491 | .app-nav { 492 | margin-top: 16px; 493 | } 494 | 495 | .app-nav li ul { 496 | top: 30px; 497 | } 498 | 499 | main { 500 | height: auto; 501 | overflow-x: hidden; 502 | } 503 | 504 | .sidebar { 505 | left: -300px; 506 | transition: transform 0.25s ease-out; 507 | } 508 | 509 | .content { 510 | left: 0; 511 | max-width: 100vw; 512 | position: static; 513 | padding-top: 20px; 514 | transition: transform 0.25s ease; 515 | } 516 | 517 | .app-nav, 518 | .github-corner { 519 | transition: transform 0.25s ease-out; 520 | } 521 | 522 | .sidebar-toggle { 523 | background-color: transparent; 524 | width: auto; 525 | padding: 30px 30px 10px 10px; 526 | } 527 | 528 | body.close .sidebar { 529 | transform: translateX(300px); 530 | } 531 | 532 | body.close .sidebar-toggle { 533 | background-color: hsla(0, 0%, 100%, 0.8); 534 | transition: background-color 1s; 535 | width: 284px; 536 | padding: 10px; 537 | } 538 | 539 | body.close .content { 540 | transform: translateX(300px); 541 | } 542 | 543 | body.close .app-nav, 544 | body.close .github-corner { 545 | display: none; 546 | } 547 | 548 | .github-corner:hover .octo-arm { 549 | -webkit-animation: none; 550 | animation: none; 551 | } 552 | 553 | .github-corner .octo-arm { 554 | -webkit-animation: octocat-wave 0.56s ease-in-out; 555 | animation: octocat-wave 0.56s ease-in-out; 556 | } 557 | } 558 | 559 | @-webkit-keyframes octocat-wave { 560 | 0%, 561 | to { 562 | transform: rotate(0); 563 | } 564 | 565 | 20%, 566 | 60% { 567 | transform: rotate(-25deg); 568 | } 569 | 570 | 40%, 571 | 80% { 572 | transform: rotate(10deg); 573 | } 574 | } 575 | 576 | @keyframes octocat-wave { 577 | 0%, 578 | to { 579 | transform: rotate(0); 580 | } 581 | 582 | 20%, 583 | 60% { 584 | transform: rotate(-25deg); 585 | } 586 | 587 | 40%, 588 | 80% { 589 | transform: rotate(10deg); 590 | } 591 | } 592 | 593 | section.cover { 594 | align-items: center; 595 | background-position: 50%; 596 | background-repeat: no-repeat; 597 | background-size: cover; 598 | height: 100vh; 599 | display: none; 600 | } 601 | 602 | section.cover.show { 603 | display: flex; 604 | } 605 | 606 | section.cover.has-mask .mask { 607 | background-color: #fff; 608 | opacity: 0.8; 609 | position: absolute; 610 | top: 0; 611 | height: 100%; 612 | width: 100%; 613 | } 614 | 615 | section.cover .cover-main { 616 | flex: 1; 617 | margin: -20px 16px 0; 618 | text-align: center; 619 | z-index: 1; 620 | } 621 | 622 | section.cover a { 623 | color: inherit; 624 | } 625 | 626 | section.cover a, 627 | section.cover a:hover { 628 | text-decoration: none; 629 | } 630 | 631 | section.cover p { 632 | line-height: 1.5rem; 633 | margin: 1em 0; 634 | } 635 | 636 | section.cover h1 { 637 | color: inherit; 638 | font-size: 2.5rem; 639 | font-weight: 300; 640 | margin: 0.625rem 0 2.5rem; 641 | position: relative; 642 | text-align: center; 643 | } 644 | 645 | section.cover h1 a { 646 | display: block; 647 | } 648 | 649 | section.cover h1 small { 650 | bottom: -0.4375rem; 651 | font-size: 1rem; 652 | position: absolute; 653 | } 654 | 655 | section.cover blockquote { 656 | font-size: 1.5rem; 657 | text-align: center; 658 | } 659 | 660 | section.cover ul { 661 | line-height: 1.8; 662 | list-style-type: none; 663 | margin: 1em auto; 664 | max-width: 500px; 665 | padding: 0; 666 | } 667 | 668 | section.cover .cover-main > p:last-child a { 669 | border-radius: 2rem; 670 | border: 1px solid var(--theme-color, #42b983); 671 | box-sizing: border-box; 672 | color: var(--theme-color, #42b983); 673 | display: inline-block; 674 | font-size: 1.05rem; 675 | letter-spacing: 0.1rem; 676 | margin: 0.5rem 1rem; 677 | padding: 0.75em 2rem; 678 | text-decoration: none; 679 | transition: all 0.15s ease; 680 | } 681 | 682 | section.cover .cover-main > p:last-child a:last-child { 683 | background-color: var(--theme-color, #42b983); 684 | color: #fff; 685 | } 686 | 687 | section.cover .cover-main > p:last-child a:last-child:hover { 688 | color: inherit; 689 | opacity: 0.8; 690 | } 691 | 692 | section.cover .cover-main > p:last-child a:hover { 693 | color: inherit; 694 | } 695 | 696 | section.cover blockquote > p > a { 697 | border-bottom: 2px solid var(--theme-color, #42b983); 698 | transition: color 0.3s; 699 | } 700 | 701 | section.cover blockquote > p > a:hover { 702 | color: var(--theme-color, #42b983); 703 | } 704 | 705 | .sidebar, 706 | body { 707 | background-color: #fff; 708 | } 709 | 710 | .sidebar { 711 | color: #364149; 712 | } 713 | 714 | .sidebar li { 715 | margin: 6px 0; 716 | } 717 | 718 | .sidebar ul li a { 719 | color: #505d6b; 720 | font-size: 14px; 721 | font-weight: 400; 722 | overflow: hidden; 723 | text-decoration: none; 724 | text-overflow: ellipsis; 725 | white-space: nowrap; 726 | } 727 | 728 | .sidebar ul li a:hover { 729 | text-decoration: underline; 730 | } 731 | 732 | .sidebar ul li ul { 733 | padding: 0; 734 | } 735 | 736 | .sidebar ul li.active > a { 737 | border-right: 2px solid; 738 | color: var(--theme-color, #42b983); 739 | font-weight: 600; 740 | } 741 | 742 | .app-sub-sidebar li:before { 743 | content: '-'; 744 | padding-right: 4px; 745 | float: left; 746 | } 747 | 748 | .markdown-section h1, 749 | .markdown-section h2, 750 | .markdown-section h3, 751 | .markdown-section h4, 752 | .markdown-section strong { 753 | color: #2c3e50; 754 | font-weight: 600; 755 | } 756 | 757 | .markdown-section a { 758 | color: var(--theme-color, #42b983); 759 | font-weight: 600; 760 | } 761 | 762 | .markdown-section h1 { 763 | font-size: 2rem; 764 | margin: 0 0 1rem; 765 | } 766 | 767 | .markdown-section h2 { 768 | font-size: 1.75rem; 769 | margin: 45px 0 0.8rem; 770 | } 771 | 772 | .markdown-section h3 { 773 | font-size: 1.5rem; 774 | margin: 40px 0 0.6rem; 775 | } 776 | 777 | .markdown-section h4 { 778 | font-size: 1.25rem; 779 | } 780 | 781 | .markdown-section h5 { 782 | font-size: 1rem; 783 | } 784 | 785 | .markdown-section h6 { 786 | color: #777; 787 | font-size: 1rem; 788 | } 789 | 790 | .markdown-section figure, 791 | .markdown-section p { 792 | margin: 1.2em 0; 793 | } 794 | 795 | .markdown-section ol, 796 | .markdown-section p, 797 | .markdown-section ul { 798 | line-height: 1.6rem; 799 | word-spacing: 0.05rem; 800 | } 801 | 802 | .markdown-section ol, 803 | .markdown-section ul { 804 | padding-left: 1.5rem; 805 | } 806 | 807 | .markdown-section blockquote { 808 | border-left: 4px solid var(--theme-color, #42b983); 809 | color: #858585; 810 | margin: 2em 0; 811 | padding-left: 20px; 812 | } 813 | 814 | .markdown-section blockquote p { 815 | font-weight: 600; 816 | margin-left: 0; 817 | } 818 | 819 | .markdown-section iframe { 820 | margin: 1em 0; 821 | } 822 | 823 | .markdown-section em { 824 | color: #7f8c8d; 825 | } 826 | 827 | .markdown-section code { 828 | border-radius: 2px; 829 | color: #e96900; 830 | font-size: 0.8rem; 831 | margin: 0 2px; 832 | padding: 3px 5px; 833 | white-space: pre-wrap; 834 | } 835 | 836 | .markdown-section code, 837 | .markdown-section pre { 838 | background-color: #f8f8f8; 839 | font-family: Roboto Mono, Monaco, courier, monospace; 840 | } 841 | 842 | .markdown-section pre { 843 | -moz-osx-font-smoothing: initial; 844 | -webkit-font-smoothing: initial; 845 | line-height: 1.5rem; 846 | margin: 1.2em 0; 847 | overflow: auto; 848 | padding: 0 1.4rem; 849 | position: relative; 850 | word-wrap: normal; 851 | } 852 | 853 | .token.cdata, 854 | .token.comment, 855 | .token.doctype, 856 | .token.prolog { 857 | color: #8e908c; 858 | } 859 | 860 | .token.namespace { 861 | opacity: 0.7; 862 | } 863 | 864 | .token.boolean, 865 | .token.number { 866 | color: #c76b29; 867 | } 868 | 869 | .token.punctuation { 870 | color: #525252; 871 | } 872 | 873 | .token.property { 874 | color: #c08b30; 875 | } 876 | 877 | .token.tag { 878 | color: #2973b7; 879 | } 880 | 881 | .token.string { 882 | color: var(--theme-color, #42b983); 883 | } 884 | 885 | .token.selector { 886 | color: #6679cc; 887 | } 888 | 889 | .token.attr-name { 890 | color: #2973b7; 891 | } 892 | 893 | .language-css .token.string, 894 | .style .token.string, 895 | .token.entity, 896 | .token.url { 897 | color: #22a2c9; 898 | } 899 | 900 | .token.attr-value, 901 | .token.control, 902 | .token.directive, 903 | .token.unit { 904 | color: var(--theme-color, #42b983); 905 | } 906 | 907 | .token.function, 908 | .token.keyword { 909 | color: #e96900; 910 | } 911 | 912 | .token.atrule, 913 | .token.regex, 914 | .token.statement { 915 | color: #22a2c9; 916 | } 917 | 918 | .token.placeholder, 919 | .token.variable { 920 | color: #3d8fd1; 921 | } 922 | 923 | .token.deleted { 924 | text-decoration: line-through; 925 | } 926 | 927 | .token.inserted { 928 | border-bottom: 1px dotted #202746; 929 | text-decoration: none; 930 | } 931 | 932 | .token.italic { 933 | font-style: italic; 934 | } 935 | 936 | .token.bold, 937 | .token.important { 938 | font-weight: 700; 939 | } 940 | 941 | .token.important { 942 | color: #c94922; 943 | } 944 | 945 | .token.entity { 946 | cursor: help; 947 | } 948 | 949 | .markdown-section pre > code { 950 | -moz-osx-font-smoothing: initial; 951 | -webkit-font-smoothing: initial; 952 | background-color: #f8f8f8; 953 | border-radius: 2px; 954 | color: #525252; 955 | display: block; 956 | font-family: Roboto Mono, Monaco, courier, monospace; 957 | font-size: 0.8rem; 958 | line-height: inherit; 959 | margin: 0 2px; 960 | max-width: inherit; 961 | overflow: inherit; 962 | padding: 2.2em 5px; 963 | white-space: inherit; 964 | } 965 | 966 | .markdown-section code:after, 967 | .markdown-section code:before { 968 | letter-spacing: 0.05rem; 969 | } 970 | 971 | code .token { 972 | -moz-osx-font-smoothing: initial; 973 | -webkit-font-smoothing: initial; 974 | min-height: 1.5rem; 975 | position: relative; 976 | left: auto; 977 | } 978 | 979 | pre:after { 980 | color: #ccc; 981 | content: attr(data-lang); 982 | font-size: 0.6rem; 983 | font-weight: 600; 984 | height: 15px; 985 | line-height: 15px; 986 | padding: 5px 10px 0; 987 | position: absolute; 988 | right: 0; 989 | text-align: right; 990 | top: 0; 991 | } 992 | @media screen and (max-width: 767px) { 993 | section.cover { 994 | background: url(https://tp-statics.tokenpocket.pro/logo/blockchain-mobile-zh.png) 995 | no-repeat !important; 996 | background-size: 100% auto !important; 997 | height: calc(100vw / 0.7) !important; 998 | } 999 | } 1000 | --------------------------------------------------------------------------------