前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >想写一本给C#程序员看的区块链书籍

想写一本给C#程序员看的区块链书籍

作者头像
申龙斌
发布2019-06-19 18:05:22
9210
发布2019-06-19 18:05:22
举报

刚接触区块链的新人会被一大堆新概念吓倒:

比特币地址、区块、区块高度、去中心化、算力、确认数、难度调整、挖矿、矿工、矿池、哈希、分叉、工作量证明、双重支付、私钥、公钥、交易、交易手续费、钱包等等

普通人在短时间内很难理解这些概念,但程序员们相当有优势,他们有计算机理论知识,理解这些概念相对容易一些。

2017年10月,我写了一本电子书《区块链生存训练v1.0》,尝试用简单的语言、形象的类比让从未接触过区块链的小白,能够逐个理解一个又一个的新概念,从而慢慢地进入到区块链的世界。

2018年2月底,我与几位朋友一起将书的内容升级到2.0版本,现在已经放在网上公开下载。

下载链接:

https://pan.baidu.com/s/1QmENCssdW1z69C98hdoIeA

提取码: vggd

随着研究区块链内部原理的深入,一直以来我想写一本给程序员看的区块链书籍,尝试用C#代码说话,当出现一个新概念的时候,我尽可能地给出一些源代码,通过分析和跟踪源程序,你可以更深刻地把握比特币和区块链的基本原理。

内容准备发在掘金小册上,定价69元,小册的名字暂定《用C#代码准确理解区块链的20多个基本概念》,如果哪位朋友有更好的名字,也欢迎留言。

小册的大纲(可能会调整):

  1. 开篇及比特币钱包Bitcoin Core准备
  2. 最最基本的概念 -- 区块(Block)及区块高度(Block Height)
  3. 可分割性及公开性 -- 可用的API一大堆
  4. 创世区块(Genesis Block) -- 找出中本聪留下的那句话
  5. 稀缺性 -- 为什么比2100万个少那么一点点?
  6. 私钥(Private Key)、公钥及比特币地址(Bitcoin Address) -- 地址重合了?
  7. WIF与助记词 -- 私钥记不住怎么办?
  8. 哈希(HASH)及SHA256 -- 可以搞一个装逼的抽奖程序
  9. 数字签名(Digital Signature) -- 如何证明你就是中本聪?
  10. 交易(Transaction) -- 上亿的资金转移只需200个字节?
  11. 交易手续费(Transaction Fees) -- 小心别给矿工送钱
  12. 钱包软件(Wallet) -- 全节点数据已经超过200GB
  13. Bitcoin Core的API -- 可以控制钱包和交易的每一处细节
  14. 去中心化(Decenteralization) -- 全世界的全节点钱包软件如何分布的?
  15. 工作量证明Pow、矿工(Miner)与矿池(Mining Pool)
  16. 创币交易(Coinbase Transaction) -- 你也拥有了铸币权?
  17. 计算目标与难度系数difficulty -- 如何每两周就调整一次难度?
  18. 算力、哈希速率(Hash Rate) -- 看看你的机器与比特币矿机相关有多大?
  19. 交易确认数 -- 为什么需要6次确认?
  20. 未花费交易输出(UTXO) -- 全世界有多少人拥有超过1个BTC?
  21. OP_RETURN誓言墙(不可篡改性) -- 你敢把情书写在区块链上吗?
  22. HD钱包 -- 分层确定性钱包是个什么鬼?
  23. 比特币的脚本体系 -- 为什么用逆波兰表示法的基于堆栈的语言?
  24. 交易的二进制表示 -- 如果你有足够的耐心,手算也可以生成一笔正确的交易
  25. 重放攻击(Replay Attack) -- 夺走别人的币?
  26. 区块和交易信息的一次全面解读
  27. 未来已来,只是尚未流行

适宜人群

本书的预期读者是没有任何区块链知识的C#程序员,当然,如果你已经是一名智能合约的开发者,本书对你也会有所帮助,通过书中丰富的C#源代码,可以让你更准确地理解比特币和区块链中的各种概念。

如果你不是一名程序员,本书可能不适合你,建议你先阅读《区块链生存训练》的1.0或2.0版本的电子书或者其它入门书籍。

阅读之后,你可以掌握比特币和区块链的20多个基本概念,关键的是你可以用程序生成比特币地址、进行消息签名、生成交易、设置交易手续费、在区块链上刻字,甚至自己写个钱包软件等等,还为下一步进行以太坊智能合约编程打下坚实的基础。

你需要准备

Windows 7 / 10(64位)电脑一台

Visual Studio 2015或2017开发环境(C#)

安装好Bitcoin Core钱包软件

书的大部分素材都已经写好了,只是源代码的整理的工作量还相当大。

如果你是C#程序员,且对本书感兴趣,欢迎参与内测。

微信联系我:SLOFSLB

为了证明你是一名C#程序员,请告诉我下面这段代码的输出结果:

代码语言:javascript
复制
string url = "https://blockchain.info/block-height/0?format=json";string block = GetUrl(url);
JObject o = JObject.Parse(block);string script = (string)o.SelectToken("blocks[0].tx[0].inputs[0].script");
byte[] bs = new byte[script.Length / 2];for (int i = 0; i < script.Length; i += 2){    bs[i / 2] = Convert.ToByte(script.Substring(i, 2), 16);}string text = Encoding.ASCII.GetString(bs);Console.WriteLine(text);

--- END ---

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 申龙斌的程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档