什么是DAPP

DAPP 是以太坊发明的词汇 Decentralized Application.

目前基于区块链技术开发的应用程序广泛的接受使用了这一名称。

 

NEL将为开发DAPP提供全面的服务

什么是NEL

    NEL是 "NewEconoLab新经济实验室"的简称,成立于2017.11.9日,是一个年轻的社区型组织。

致力于

培养社区开发人才,推动项目落地,发展NEO社区生态

    主要活动区域是

https://github.com/NewEconoLab/

 

    NEL会为NEO的DAPP开发提供全面的支持,欢迎学习、交流、参与。

DAPP开发的几种模式

目前DAPP开发有几种模式

之前做了一次基于全节2点开发DAPP的培训,效果不太好。去的人都太帅了,颜值超越了程序员太多。

所以这里补上说明,退一步,更加系统的来说一下DAPP的开发。

很多时候,很多事情,并不是只差一个程序员的状态。往往,你差好几个程序员。

我们将分这几种模式来讨论一下。下文列出的需要程序员都可以一人身兼N职。

模式一、基于全节点客户端开发DAPP

基于全节点客户端开发DAPP是工作量最少的模式,你只需要修改NEO GUI 源码,加上你的DAPP专属的代码.

如果你是要测试一个DAPP的概念,这种方式比较适合,快。

需要程序员:

1.winform 程序员,会c#的程序员多半可以用几个小时掌握winform开发。

2.智能合约程序员,基于NEO区块链开发智能合约,目前用c#开发智能合约是最成熟的。

 

NEL 已经为此提供了项目NEO-GUI NEL版。

源码 https://github.com/NewEconoLab/neo-gui-nel

这个版本增加了插件机制。

1.你不需要去阅读neo-gui源码了,关键部分通过插件接口可以知道。

2.项目更加可控,多个dapp也不用整合代码了

3.有例子可以参考

模式二、快速全节点客户端开发DAPP

这个模式是在同步区块链时有所选择,只同步和自己的钱包有关的,所以同步速度较快。

但还是要同步。NEO官方有用ts实现一版,代码比较复杂。

官方已放弃此项目,这个模式 NEL也不会提供支持。

模式三、轻钱包前后台模式开发DAPP

首先很多介入DAPP开发的爱好者们基本上都低估了轻钱包前后台模式的开发难度。如果一头扎进来,基本上几个月的时间扔进去还是一头雾水。

蓝鲸淘或者区块链浏览器或者别的什么采用这种模式的项目开发,都不是一个小工程。

他们基本的系统结构是这样

看了这个系统结构,我相信DAPP的开发者能够更清醒的认识到开发一个这种模式的DAPP,并非一件轻松愉快的事情。

 

虽然这种开发模式体验最好,但是还没有形成标准,所以后台几层需要自行开发。

有一些浏览器开放了他们的API出来,但对整个系统缺乏说明。

 

采用这种模式你需要如下程序员

    1.能修改或者部署neo-cli节点的程序员或者网管

    2.能开发爬虫之类程序的程序员,会写数据库

    3.能开发网页API的程序员

    4.前端程序员

    5.智能合约程序员,推荐c#

很不幸 2 3 4 很难列出推荐的语言或者技术,因为实现这类功能的方案实在太多了。

 

NEL将会为这种开发模式提供一整套的方案,助力DAPP开发。

很多项目还在开发中,后文会有介绍

DAPP开发的基础

理解区块链

    区块链是分布式的账本。

    需要了解区块链的共识过程,每一个区块都是在每一个节点上被执行。

和传统的服务器不一样,每一个节点都要逐一执行区块链上的每一笔交易。

而所有的DAPP,最终也体现为一笔笔的交易。

理解NEO智能合约

    调用NEO智能合约也是一笔交易。

智能合约主要的输出方式是写入storage。

这些我们以后会专门开一篇来说

调试NEO智能合约

  1. 如何编写合约

    见NEO文档

  2. 如何发布合约

    见NEO文档

  3. 如何调用合约

    NEOGUI 有提供调用合约的测试功能,见NEO文档

     

  4. 如何调试合约

    鉴于NEO智能合约的执行是在链上,而发布调用交易和交易被执行的过程是分离的,而且还不是本机执行。所以智能合约的调试一直缺乏良好的方法

    NEL为此专门开设了区块链浏览器项目

    

可以分析已经执行过的智能合约交易,对其执行的过程完全复盘,并对应到源码

智能合约浏览器还在开发中,目前已经可以使用,欢迎开发者入坑。以后我们会专门撰文来说这个话题。

NEL的一些支持工作

Neo-gui nel 版本

源码 ,https://github.com/NewEconoLab/neo-gui-nel

        (neo-gui项目)

 

目标 简化开发基于neo-gui的dapp

状态 已完成,将关注neo 官方 neo项目 neovm项目 neo gui项目,随时升级同步。

 

Neo-cli nel版本

    源码 https://github.com/NewEconoLab/neo-gui-nel

            (neo-cli项目,和上面的在同一个仓库)

    目标 在NEOCIL的基础上提供智能合约调试的数据。

状态 已完成,随时升级同步

NEL 节点统计入库程序

    目标 开发一个通用化、容易插件化扩展的节点数据统计入库程序。

    状态 计划中

NEL 查询API

    目标 为轻钱包前后台模式的DAPP 或一个者neo浏览器 提供查询功能支持

    状态 计划中

NEL 智能合约交易浏览器

    源码 https://github.com/NewEconoLab/SmartContractBrowser

    目标 提供已经完成的智能合约交易中精确的交易执行情况的检查,作为一个非常有效的智能合约调测程序,补充智能合约开发环境。

    状态 开发中,完成50%,已经可以配合Neo-gui nel版本 或者neo-cil nel版本 进行本地化调测。

         等NEL 查询API上线,就可以开发online版本。

NEL 浏览器插件钱包

    目标 解决各个浏览器DAPP 各自实现各自钱包导致的各种问题。

  1. 用户的私钥转来转去都在浏览器缓存中,风险较大的问题。插件钱包加密保存,DApp 找插件要地址就行了
  2. 私钥加密保存在浏览器插件中,永远不会给DAPP。需要对数据块签名时,DAPP 发送数据给浏览器插件进行签名。签名后返还给DAPP。DAPP 不会得到私钥,降低私钥泄露风险
  3. 每次签名插件会弹出提示,让用户确认,避免DAPP在用户不知情的情况下发送交易。
  4. 对接硬件钱包只需要插件支持,所有DAPP无需额外工作即可得到硬件钱包的保护。

    状态 计划中

NEO区块链-DAPP开发直通车-第零篇的更多相关文章

  1. 《区块链DAPP开发入门、代码实现、场景应用》笔记5——区块链福利彩票的设计

    笔者一直强调,一定要利用区块链的特点来解决行业存在的问题,并且该问题最好用区块链解决或者说只能用区块链解决.彩票行业就是个例子. 在讲解代码之前,首先讲解一下业务设计,如图6.15所示. 图6.15 ...

  2. 《区块链DAPP开发入门、代码实现、场景应用》笔记4——Ethereum Wallet中部署合约

    账号创建完成之后,账号余额是0,但是部署合约是需要消耗GAS的,因此需要获取一定的以太币才能够继续本次实现.在测试网中获取以太币可以通过挖矿的方式,在开发菜单中可以选择打开挖矿模式,但是这需要将Syn ...

  3. 《区块链DAPP开发入门、代码实现、场景应用》笔记3——Ethereum Wallet的安装

    以太坊官方网站可以下载最新版本的Ethereum Wallet,用户无需选择,浏览器会根据访问者操作系统版本自动展现合适的版本,点击DOWNLOAD按钮下载即可安装,如图2.9所示,其下载网址: ht ...

  4. 《区块链DAPP开发入门、代码实现、场景应用》笔记2——Solidity实现简单的智能合约

    本节仅以一个简单的智能合约示例,介绍智能合约的基本组成元素,本合约定义一个uint类型的变量,以及对应这个变量的读写函数. 01 pragma solidity >=0.4.0 <0.6. ...

  5. 《区块链DAPP开发入门、代码实现、场景应用》笔记1——天外飞仙DAPP

    Solidity编程语言解决了编写智能合约的不友好的问题,但是当合约编译并部署之后,对与这些接口的访问,对于一般的使用者来说,门槛有点高, 对普通用户来说也是非常不友好,为了使广大用户理解并方便快捷的 ...

  6. DAPP 开发直通车-如何基于NEL 轻钱包来开发DAPP

    之前做了 DAPP 开发直通车,通讲了一下开发一个DAPP的过程.   但是涉及多工种,多步骤.入手还是非常困难的.   经过不懈的努力,做了很多铺垫工作之后,我终于可以告诉你:   开发DAPP f ...

  7. 区块链会2020再次爆发,先学点DAPP压压惊,跟我一起学《区块链DApp入门实战》

    区块链DApp正在经历市场洗礼,常言道,对抗动荡最稳妥的是稳扎稳打的技术学习,不能临时抱佛脚. 马化腾说:互联网会像水和电一样融入我们的生活.而区块链呢?它是价值互联网的基石,是未来必然的趋势,也会像 ...

  8. 未来-区块链-IBM:IBM 区块链技术开发社区

    ylbtech-未来-区块链-IBM:IBM 区块链技术开发社区 1.返回顶部 1. 开始学习 IBM Blockchain 101:开发人员快速入门指南 这篇快速入门指南适合不熟悉区块链技术,希望快 ...

  9. blockchain 区块链的开发,基于python或node js

    现在很多人用node js做区块链的开发,因为点对点并发是区块链中的难点技术之一,而node js天然的对并发支持比较好,因此比较有优势. http://ecomunsing.com/build-yo ...

随机推荐

  1. MySQL源码安装一键脚本

    #红色部分根据自己的需求来定义#!/bin/bash #卸载系统自带的Mysql /bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps /bi ...

  2. Java+selenium之WebDriver的常用方法封装(八)

    总结:WEB UI自动化测试一般采用 POP(面向页面编程),自动化测试框架分三层,有时如果页面如果太多,不好管理,可以面向控件编程,即把控件当作页面,毕竟控件是有限的,所以封装页面的代码量会少很多, ...

  3. 插件使用一进度条---nprogress

    nprogress 是像youtube一样在顶部出现进度条,用在一些加载比较缓慢的场景中. 官方网站是 http://ricostacruz.com/nprogress/ 源码在 https://gi ...

  4. 笔记本如何设置插入USB鼠标自动禁用触摸板

    Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh] [HKEY_LOCAL_MAC ...

  5. Android之Error: 'L' is not a valid file-based resource name character解决办法

    1.问题 Error:Execution failed for task ':mergeBYODReleaseResources'.> /home/chenyu/Android_dev/sang ...

  6. js调试console.log使用总结图解

    一 实例 打印字符串和对象: 可展开对象查看内部情况: 看一下console对象本身的定义情况: 输出对象情况: utag对象所在文件: 输出对象: 二 Console.log 总结 1   如果你j ...

  7. Oracle数据库中字符型字段按数字排序

    今天在转换数据时,遇到了一个主键排序的问题.字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序. 但发现to_number总是报错,就想着里面应该是有字符存在.后来 ...

  8. elk服务器和运维服务器的IPTABLES

    --运维服务器 iptables -P INPUT ACCEPT iptables -F iptables -X iptables -Z iptables -A INPUT -i lo -j ACCE ...

  9. [转] 一张图理解prototype、proto和constructor的三角关系

    前面的话 javascript里的关系又多又乱.作用域链是一种单向的链式关系,还算简单清晰:this机制的调用关系,稍微有些复杂:而关于原型,则是prototype.proto和constructor ...

  10. thinkphp5分页传参

    $name = input('get.searchKey/s'); if($name != ""){ $this->assign('searchKey', $name); $ ...