发起

区块链编程该如何入门?

想学习区块链的编程,该怎么学习?有哪些资料需要看?

0 0
  • Jeffrey_zhou

    区块链开发

    赞同来自: peterchen145 那年的烟水 白菜 biger wangshijun william soryer 半步江南 Ksbc davidsz fix 醋叔 七叔之家 kinder3609 一叶知秋 更多 >>
    区块链开发看似门槛较高的一个原因是底层综合了P2P网络协议,分布式共识算法,密码学等应用。另一个原因是多如牛毛一般的概念。

    我认为有两种意义上的区块链编程,一基于合约型区块链开发的链上DAPP,这是入门区块链编程门槛最低的一种开发方式,你只需要掌握一些基础的合约语言(例如solidity)和前端知识,就可以做出来一款非常不错的DAPP。

    二是做区块链底层的链开发,例如区块链主链协议,分布式共识算法,跨链互联等,针对的都是区块链如何实现的协议,这种开发方式最好是从原理开始入门,理解区块链的运行原理,多看主流的区块链的代码,例如比特币,以太坊,BTS。

     

    开发入门建议:

    1.P2P网络协议层:主流的P2P的应用一般是基于C++写的,建议学习《UNIX网络编程》这本书,可以从基本上了解网络协议的开发流程及步骤。

    2.共识层:分布式系统如何达成共识是区块链的核心所在,它决定了区块链的性能问题,《区块链核心算法》这本书非常不错,从代码实现层一层一层的解析各种共识算法的原理以及如何实现,这本书拿生命去推,在此基础上采用何种共识也决定了你的共识算法,加密机制。

    3.链上应用:链上API的设计方式决定了链上应用的建立,用区块链去选择一种合适的分布式场景应用时,应根据你以往的项目经验比如做过存储的想做分布式存储,那么就需要把一些存储应用设计到分布式账本上,说简单一点,在区块链上应用的开发也分成服务端和客户端,服务端在链上执行操作,客户端在链上请求操作。

    4:钱包:钱包开发建议多看一些钱包的开源代码,个人觉得从代码上理解钱包会更简单一点,当然不一定适合每一个人。

    基本的开发步骤都写下来了,做区块链开发建议掌握C++和Golang语言,当然ruby\rust等语言也都可以用,lisk使用js开发的,没有哪一种语言最合适,建议c++/golang的原因是因为开源代码这两种语言的例子很多,可以多看看开源代码。

    (此回答已获得88yoyow奖励)
    15
  • 比特币爱好man

    炒币实干家

    赞同来自: 神马疯了 peterchen145 halfss wangshijun soryer swj222225 醋叔 七叔之家 更多 >>
    (一)Go-ethereum项目

        开发语言:go语言

        客户端文件:Geth

        界面:命令行

        适用平台:windows、linux和OSX

        功能和特点:该项目是使用最广泛的以太坊客户端,大部分节点都是运行的该客户端,教程和例子也最多,推荐使用,可用于挖矿,组建私有链,管理账号,部署智能合约等常用功能,不可以编译智能合约。

    (二)webthree-umbrella项目

        此项目包含3个客户端

        开发语言:c++

        客户端文件:AlethZero、Mix和Eth

        使用平台:windows、linux和OSX

        界面:图形化界面

        功能和特点:该项目严格来说是cpp-ethereum 项目的一个shell,是以太坊基金会的前CTO,Gavin Wood主持编写的,所以人气也很高,易用性也很好。AlethZero是图形化的钱包客户端,对应的是Geth的功能,不过是全图形化的。但是随着后续以太坊基金会主推的图形化钱包Mist的推出,渐渐没落。Mix 是智能合约(以太坊称为DAPP)的开发IDE,可以支持智能合约(DAPP)的编写、调试,部署,全图形化界面,但是目前已经停止开发了,开发组转向了Remix。Eth是C++编写的命令行客户端功能和Geth一样。

    (三)Mist项目

        开发语言:JavaScript

        客户端文件:Mist(目前使用Ethereum-Wallet的名称)

        使用平台:windows、linux和OSX

        界面:图形化界面

        功能和特点:该项目是以太坊基金会主推的项目,Mist定位不只是一个钱包,而是将来DAPP(智能合约的应用APP)市场,类似于苹果市场,在这里可以有你的账号,可以浏览、发布和买卖以太坊的DAPP应用。目前因为开发还不够全面,名称暂时显示为Ethereum-Wallet,作用也很简单,就是一个钱包的功能。强烈推荐,未来的主流客户端。

    (四)solidity项目

        开发语言:C++

        客户端文件:solc

        使用平台:windows、linux和OSX

        界面:命令行界面

        功能和特点:该项目是以太坊智能合约(DAPP)的编程语言,使用solc作为编译程序,该项目主要用于编译,严格来说是一个基本的编译平台,一般开发可用MIX替代。

    (五)browser-solidity项目

        开发语言:C++

        客户端文件:浏览器中显示

        使用平台:windows、linux和OSX

        界面:浏览器界面

        功能和特点:该项目是智能合约浏览器版本的开发环境,可以支持在浏览器中直接开发、调试和编译,对于初学者来说,可以快速上手,不需要安装,非常方便,直接访问地址使用:https://ethereum.github.io/browser-solidity/

    (六)pyethereum项目和ethereumj项目

        pyethereum项目是用Python语言编写的以太坊客户端,ethereumj项目是用Java语言编写的以太坊客户端,只是语言不同,和前面GO语言编写的客户端Geth的功能完全相同。

    (七)etheminer项目

        开发语言:C++

        客户端文件:ethminer

        使用平台:windows、linux和OSX

        界面:命令行

        功能和特点:该项目是cpp-ethereum项目的一部分,用于和Geth配合进行GPU挖矿,比CPU挖矿效率高100多倍,也可以用于矿池挖矿

    希望能帮到你,码农很辛苦要做好吃苦准备。哈哈哈

     

    (此回答已获得108yoyow奖励)
    8
  • baidang201

    区块链技术探索者,精通C++,研究区块链技术. 区块链研习社成员,007er,简书 剑有偏锋 yoyow=409599711

    赞同来自: peterchen145 soryer 醋叔 大龄青年
    一 入门比较简单的是以太坊智能合约开发,所需的知识体系

    《1》以太坊相关的基础概念,公钥加密系统,旷工,汽油,账户体系

    《2》熟悉智能合约开发编程语言solidity

    《3》智能合约开发工具,remix,metamask,truffle等





    二 较高难度的是区块链底层开发,需要的知识体系较多,要了解到原理层

    《1》密码学基础

    《2》共识算法

    《3》网络编程(p2p)

    《4》c++ golang java编程语言

    《5》http rpc接口编程

    《6》linux相关知识,环境的部署维护

     

    (此回答已获得36yoyow奖励)
    4
  • 那年的烟水

    90后IT男,区块链工程师,炒币老韭菜,YOYOW账号:275716708

    赞同来自: peterchen145 wangshijun 醋叔
    以研究区块链底层架构为主,DAPP的场景应用暂时未涉及;

    有兴趣有时间的可以从书本开始看起:

    计算机网络、数据结构、应用密码学、操作系统、分布式算法、编程语言(C/C++为主、Golang之类的);

    学习底层原理的同时,可以学点区块链主流内容充电:

    比特币白皮书,以太坊白皮书/黄皮书/紫皮书,比特股白皮书、比特股石墨烯设计思路、PoW、PoS、DPoS、PBFT等等、图灵机、预言机之类的

    视频资料:

    区块链学堂陈琳老师的啦(真不是托),其他慕课上面找吧

    文档资料:

    英文好的,首选GitHub上面的wiki和源码,中文的巴比特或者自行百度

    一个一个来吧,前期可以看点源码,同时在学习中
    3
  • jackzhou2

    比特股源码分析大师

    赞同来自: davidsz peterchen145
    区块链编程是一个很宽泛的问题,目前公开发行的数字货币大概有1400种左右,主要编程语言以c和c++居多。如果想学习区块链编程建议先学好c/c++,然后精读一到两种数字货币的源码,推荐精读比特币和比特股。一边看源码,一边看区块链书籍,这样可以把区块链基础知识掌握的非常牢固。基础打牢以后,根据实际应用场景设计新的区块链产品就不会无从下手了。

     

    (此回答已获得28yoyow奖励)
    2
  • 菜菜子

    区块链研习社技术负责人、比特币源码研读班讲师、区块链技术的研究者与践行者

    赞同来自: susheng peterchen145
    学习区块链编程,我觉得首选学习比特币编程,比特币编程的学习路径个人建议是这样的:

    1.第一步系统性地多看几遍《精通比特币》第二版,这本书我从第一版就开始看,现在有时间或者有疑问也还是会去翻看一下,强烈推荐; 2.推荐区块链研习社在千聊平台的《比特币编程》课程, 其中,《比特币编程》从比特币原理和源码角度系统性,由浅入深地分析了比特币源码编译、比特币交易、挖矿、交易脚本、区块等各模块的实现原理,代码结构分析;

    3.同时研习社从去年6月开始组织了比特币源码研读班,已举办了三期,源码研读系列文章达到100余篇,参与人次达100多,取得了不错的效果。如果想要详细了解可以关注“区块链研究社”公众号,或者私信我,或者加我微信:forest21000。
    2
  • 星丨尘
    赞同来自: 半步江南 susheng
    不建议学习智能合约的编写,我觉得那些东西变化太快了,还没有一个统一的标准,学那个没有安全感

     

    所以还是直接学构建底层区块链吧,起码这些东西短时间不会变



    用 golang 从零开始构建区块链(Bitcoin)系列



    我也刚开始学,大家可以一起探讨



     
    2
  • xcc

    区块链

    赞同来自: peterchen145
    刚刚入门可以看看<<精通比特币>>了解基本的概念

     
    1
  • halfss
    赞同来自: peterchen145
    建议基于自己熟悉的开发语言, 从 gitlab 上, 先找微链(tinyblockchain)的实现, 然后自己好好吸收一下; 

    自己开始写一遍; 

    我的实现流程如下:

        1: p2p

        2:区块打包

        3:交易验证

        4:挖矿

        5:智能合约

     
    1
  • sweallow

    区块链投资砖家

    赞同来自: fix
    作为一名也在学习的开发人员,我建议看一下区块链项目开发的大纲,以此为思路进行学习。

    1. 去中心化应用总览



    2. 以太坊原理学习



    3. 如何编写简单智能合约



    4. 开始使用web3.js



    5. 如何创建钱包服务



    6. 创建智能合约部署平台



    7. 创建投注App



    8. 创建企业级智能合约



    9. 创建联盟区块链

     

    大体以上几个点,希望和大家一块学习
    1
  • Fonda

    283166633

    赞同来自: fesh004
    1
  • 皮皮鲁
    赞同来自:
    感觉都太复杂了……几乎都没看到比较简单的方式,感觉最好就有那种傻瓜式的,否则在具体的应用推广方面始终存在客户化方面的问题。
    0
  • davidsz

    yoyow 421415960

    赞同来自:
    学区块链编程技术,如果想像V神或bm等人那样开发新的底层,那么涉及到的东西就多了去了,数据结构,加密算法,p2p通讯协议,共识算法等等等等。但大部分人的想法是只是介入新领域,换一个好工作吧,那就得从项目方的需求来分析了。三大生态中,比特币体系性能有限,玩家不算多,石墨烯技术虽然厉害,但圈子里的项目大多不温不火,bm自己的新项目eos虹吸效应明显,留给其他人的资源和空间都较小,只有以太坊靠着erc20快速发币这个杀伤应用,做得风生水起,吸引了大部分项目玩家,因此这部分对技术人员的需求也是最大的,因此从入门来说,先了解以太坊的技术构架,底层技术知道就好,重点在于掌握智能合约和发币的实际操作,进门了之后就靠个人了
    0

要回复问题请先登录注册

Copyright © 2018