基于以太坊上实现DApp的登录注册

本文介绍了如何在以太坊上开发基于智能合约的登录注册功能。首先探讨了区块链技术的用途,然后讲解了以太坊环境的搭建、创世区块创建、账户管理、Solidity智能合约编写以及web3.js与合约交互。文章通过实例演示了如何使用web3.js实现登录注册业务逻辑,并提供了接口测试案例。最后,文章提到了区块链在数据隐私保护方面的潜力和目前面临的挑战。
摘要由CSDN通过智能技术生成

“我总偏向将权利分散于网络。这样一来,就没任何组织能轻松获取控制。我不相信巨大的中央组织,天性使然。”——Bob Tayor, ARPANET缔造者

本文原创发表于所问HT前端团队,原文地址:http://ht.askingdata.com/article/5af91967ab8f0f686da0d11d

今年年初的“三点钟区块链群”彻底激起了以加密数字货币的主的区块链浪潮,资本的驱动加深了人们对区块链技术的狂热。然而,作为区块链3.0的时代的更广的应用来临,技术如何落地也是在初期需要解决的第一道坎。

所以今天就来试一下如何在以太坊上建立智能合约应用(Dapp),开发一个普通应用的该有的登录注册,以便我们第一时间尝鲜。

为什么要使用区块链?

作为一名标准的web开发人员,在开始一门新技术之前,需要仔细考虑一个问题就是:基于现有的业务如果用上区块链会更好吗?

回答这个问题之前,你需要了解区块链是什么?优势是什么?这个问题就不在这里展开了,这是个相当大的话题,不清楚的同学可以移步到这里参考一下。《区块链-百度百科》《区块链技术是什么?未来可能用于哪些方面?》

那么区块链本质上就是一个去中心化的数据库,只不过这个数据库没有中心服务器、数据无法篡改同时一定程度上能够很好的保护数据隐私。对如今的互联网来说,听起来很具有革命性的技术。所以如果对于一款涉及到数据私密性、永久性安全性高的应用,这个确实是非常适合的。

现在在金融、医疗、溯源、社交等等领域,很多公司逐渐开始试水更广泛的应用。而只靠发币炒币,这毕竟是种投机取巧的行为。

以太坊入门必备基础

接下来将会从零开始搭建基于以太坊web3js项目,开始阅读之前,你需要熟练前端或后台JavaScript语法,熟悉区块链思想和原理,如果能了解solidity语法更好,因为接下来我们会用到它,和js很像的一门语言。

为了能够方便大家能够快速的了解,提供了下面几个资料供参考:

  1. 《ethereum官网》以太坊官网。
  2. 《sails官方文档》一款后台的nodejs框架。
  3. 《 we3.js 文档1.0版本》以太坊上的前端框架,可实现与合约交互。
  4. 《solidity 文档》以太坊的智能合约语言,熟悉常用语法,和JavaScript语法类似。

了解上面的知识之后,就可以开始DAPP搭建之旅了,将从下面的路线讲解:

  1. 搭建以太坊环境。
  2. 创建创世区块。
  3. 简单的挖矿、创建账户。
  4. 利用以太坊钱包查询账户信息。
  5. 编写智能合约。
  6. web3.js与合约交互。
  7. 登录注册业务逻辑实现。
  8. postman接口测试

项目代码可点击查看https://github.com/Elliottssu/web3js-api

一、以太坊环境搭建

如果已经有以太坊环境的同学可以跳过,接下来以mac系统为例介绍,windows也差不多。

通过Homebrew来安装go-ethereum

brew tap ethereum/ethereum

可以添加–devel以下命令来安装开发分支(建议用这个):

brew install ethereum --devel

执行geth version查看版本号,如果正常的话即安装成功。

二、新建创世区块

在比特币系统里,这个创世块是被写入源码,但对于以太坊而言,创世块可以是任何你喜欢的东西。你也可以把这个当成是系统的一个漏洞。但是共识算法确保其它人除非纳入你的创世块,否则是不会有效的。

创世区块的目的是搭建私有链,作为链上的第一个块,如果直接运行节点的话会同步公链的数据,数据量会非常大。如果想在同一个网络中获取数据,创世区块也必须要一样。

新建genesis.json文件内容如下:

{
    "config": {},
    "nonce": "0x0000000000000042",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x100",
    "alloc": {},
    "coinbase": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x00",
    "gasLimit": "0xffffffffffff"
}

上面定义了一些如挖矿难度、以太币数量、gas消耗限制等等信息。

在当前目录下执行geth init genesis.json 来初始化创世区块节点。

至此,环境配置方面已经完成。我们可以通过下面这个命令在8545端口来启动节点:

geth --rpc --rpccorsdomain "*" --rpcapi "personal,web3,eth,ne

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值