DApp概念和web3.py介绍
简单来说,DAPP和普通的App原理一样,除了他们是完全去中心化的,由类似以太坊网络本身自己的节点来运作的DAPP,不依赖于任何中心化的服务器,DAPP是去中心化的,可以完全自动地运行。
DAPP是Decentralized Application的缩写,中文叫分布式应用/去中心化应用,通常来说,不同的DAPP会采用不同的底层区块链开发平台和共识机制,或者自行发布代币(也可以使用基于相同区块链平台的通用代币)。
区块链技术之中的智能合约系统有三个重要的原则:
1)首先,智能合约数据来源于链上。这是指智能合约的输入是从区块链的数据库里面出来的。这些数据是由区块链保证的,具有真实难以篡改的特征。
2)其次,智能合约的执行在链上。这是指智能合约是在多个节点上面执行,而所执行的结果必须是相同,智能合约所出的结果一定要被共识才能被接受。
3)再者,智能合约输出在链上。这是指智能合约的输出结果必须存在区块链上面,这样保证结果的真实与可追溯性,并且为其他相衔接的智能合约提供输入数据的准确性保障。
智能合约由创建者定义,由区块链执行和构建而成,其中与合约条款相关的所有信息,均依照合约中设定的操作自动执行。但与此同时,智能合约的使用也对相应领域技术应用标准产生了更高的要求。
比如,合约主体智能合约必须要有合约主体,如此才能自动锁定、解开合约中的相关商品及服务;数字签名智能合约需要所有参与者透过他们的私钥进行认证之后,才能被启动;合约条款智能合约涉及条款所有的操作顺序,皆须由所有参与者认同并签署后才可执行;而去中心化平台智能合约被放入去中心化的区块链平台,并分布于各个节点之间,等待执行合约。
随着区块链技术逐渐走向成熟,区块链正在从以金融应用为主的2.0时代走向多领域、产业化应用的3.0时代,全面赋能经济社会发展,影响着新一代商业模式与经济结构的形成。
加速突破区块链底层技术、充分发挥智能合约的技术优势、实现区块链与传统产业的紧密融合将成为抢占科技与经济发展高地的重点。BCB智能合约技术打造下的亚太城,无疑是最成功的创新应用范例,也让我们看到智能合约技术实现大规模场景落地的可能。
一般来说,协议和个人在很大程度上使用“Solidity”来为诸如以太坊等区块链编写智能合约,它承载了Web 3.0生态系统中的大部分dApp。
但是,不知道如何使用Solidity编写智能合约的个人可以在以太坊上构建dApp,并可以利用各种免费工具来查找智能合约模板,并使用Remix进行部署。
随着Web 3.0领域内的快速创新,编写和创建Web 3.0合同的新方法不断涌现。Morales等强大的开发平台有助于简化这些智能合约的编写过程,因为它专注于区块链开发的JavaScript,同时还使用快捷方式来实现dApp顺利运行所需的智能合约驱动功能。
dApps:dapp就是D app,d是英文单词decentralization的首字母,单词翻译中文是去中心化,即dapp为去中心化应用。
DAPP智能合约开发流程是怎样?
基本流程Asch有三种网络类型,分别是localnet,testnet,mainnet,后两种是发布到线上的,可以通过公网访问。第一种localnet是运行在本地的,只有一个节点的私链,主要是为了方便本地测试和开发。Dapp的开发同样要涉及到这三种网络,即第一步,在localnet的开发,本地测试第二步,在testnet测试第三步,正式发布到mainnet。
Semantic Web:语义网,语义网是一种智能网络,它不但能够理解词语和概念,而且还能够理解它们之间的逻辑关系,可以使交流变得更有效率和价值。一个使用场景:语义网能够根据语义进行判断的智能网络,实现人与电脑之间的无障碍沟通。它好比一个巨型的大脑,智能化程度极高,协调能力非常强大。
Web3,一种基于区块链技术的互联网生态系统,被人们称为下一代互联网。
下面我们从用户角度和技术角度再看看APP和DAPP的区别之处。
从客户体验角度,APP相对于DAPP有四大问题,一是截留用户数据,二是垄断生态平台,三是保留用户权利,四是限制产品标准创新。
从技术角度,DAPP与APP区别主要有两个方面,一是APP在安卓或苹果系统上安装并运行;DAPP在区块链公链上开发并结合智能合约;二是APP信息存储在数据服务平台,可以运营方直接修改;DAPP数据加密后存储在区块链,难以篡改。
根据去中心化的对象,DAPP可以进行分类。
对于一个中心化服务器而言,包括计算、存储能力,以及所产生的数据三个方面,而由数据之前的关联度又产生了某种特定的“关系”。
对于DApp开发来说,主要挑战之一就是在于将智能合约与网站前端连接起来。最高效的方法是使用Web3库(Python或Javascript)来实现。这对于Javascript开发者来说可能很快完成,因为网上有许多Web3.js的教程,但对于Python开发者而言并不容易。
web3.py是一个纯Python JSON-RPC打包,用于与Ethereum以太坊节点进行通信。如需使用这个库,则需要一个运行中的Ethereum节点,并启用HTTP或IPC。虽然Web3.js社区非常庞大,但是Web3.py在Github上也拥有超过1.5k的星标,同时拥有133个贡献者以及一些具有吸引力的以太坊API。web3.py社区足够成熟,所以Python开发人员完全可以基于Web3.py来开发区块链DAPP。