如何开发一款的以太坊应用
一、前言
在P2PDB的roadmap中,我们描述了想实现的去中心化数据库的完整形态,通过SQL语法管理以太坊数据成为关键的一步,本文是对P2PDB实现以太坊的数据管理的一种设想
二、实现步骤
1、首先我们需要先熟悉并了解以太坊的数据结构,通过以太坊开发文档 | ethereum.org 去了解技术原理及数据存储结构
2、第二步,我们需要使用以太坊的golang 语言客户端(P2PDB是完全使用go编写)
3、需要将SQL语句跟go-ethereum 结合起来
以查询以太坊账户余额举例:
golang代码:
func main() {
client, err := ethclient.Dial("https://cloudflare-eth.com")
if err != nil {
log.Fatal(err)
}
fmt.Println("we have a connection")
_ = client // we'll use this in the upcoming sections
account := common.HexToAddress("0x58B7Ad14b90bb2abE6C51163aE8905b5c670B79E")
balance, err := client.BalanceAt(context.Background(), account, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(balance) // 25893180161173005034
// fmt.Println
// fmt
// }{}
}
P2PDB翻译后
select * from account where address="0x71c7656ec7ab88b098defb751b7401b5f6d8976f"
4、翻译后的SQL语句
### 查询账户
1、查询账户余额、代币余额,
select * from account where address="0x71c7656ec7ab88b098defb751b7401b5f6d8976f"
2、查询账户余额、代币余额, 增加区块筛选
select * from account where address="0x71c7656ec7ab88b098defb751b7401b5f6d8976f" and block_number=""
3、查询账户待处理余额
select * from account where address="0x71c7656ec7ab88b098defb751b7401b5f6d8976f" and PendingBalanceAt=true
### 钱包
1、创建钱包表
create table wallet
public_key varchar(255)
private_key varchar(255)
2、创建钱包地址
insert into wallet public_key="" and private_key=""
### 交易
此处省略。
三、结论
由此P2PDB极大的降低用户使用以太坊的复杂度,同时P2PDB是完全使用mysql 协议,任意一种使用Mysql数据库的编程语言及客户端都可以使用。
以太坊怎么被应用
1.供应链
Viant是一个建立在以太坊上的供应链跟踪平台,今年早些时候与微软合作帮助世界野生动物基金会部署了一个计划,该计划主要用于验证鱼类是否可以从可持续来源获取。此外Viant还与制药巨头葛兰素史克公司合作,追踪科学家使用的知识产权许可证,并确保产品在适当的条件下生产,运输和存储。
2.能源
石油和天然气商品市场中的区块链解决方案不仅可以降低和保护交易系统相关的成本,还可以降低与人工、数据管理、交易结算、争议解决和系统通信相关的成本。而所有这些都不会影响目前为公司提供竞争优势的专有数据,信息来源或交易方式。企业级以太坊的权限和隐私功能将使贸易公司能够创建自定义访问限制和隐私设定,以便行业参与者可以跨单个安全平台进行交易,同时避免泄露机密交易数据。
3.贸易融资
Komgo由全球十五家最大的银行和商品公司宣布成立,这是一个基于以太坊区块链的贸易融资平台,通过端到端加密共享用户数据并将信用证明数字化来增强全球贸易中的信用记录。Komgo同时正在完善全球化的KYC流程,并为临时拥有商品作为贷款抵押品的银行提供融资担保。
以太坊合约是什么
“比特币是区块链1.0,以太坊是区块链2.0”、“以太坊是公链的霸主地位”,类似的表述或许你经常听到。什么是以太坊?和比特币有什么不同?为什么会被称为“区块链2.0”?今天,我们就来一起揭开以太坊的“神秘面纱”。
01 天才神童:V神
在讲什么是以太坊之前,必须介绍一下以太坊的传奇创始人——Vitalik Buterin,一个天才神童,大家称为“V神”。2011年,作为计算机科学家的父亲,就开始给自己的17岁儿子V神安利才2岁的比特币(中本聪2008年发布了比特币白皮书,但世界上第一枚比特币是2009年1月份由中本聪挖出)。研究了比特币之后完全被迷住的V神,开始帮一家媒体在论坛上写区块链相关的稿件,又联合别人一起创办了比特币杂志。2013年,19岁的V神去美国参加了一个比特币相关的会议。然后他发现比特币有些许缺陷,自己很想要进行一些弥补。参加完会议后的V神内心澎湃,和当年的比尔·盖茨、马克·扎克伯格一样,不久便从大学退学了。然后,他花了半年时间,去世界各地拜访那些想改进比特币的个人和团队。当然,最后V神有点失望,因为他发现,大家都是在比特币上做些修修补补,没有从根本上解决比特币的缺陷,即功能太单一。于是,他提出了以太坊的想法,决定另起炉灶,大干一场。2014年,20岁的他开始众筹开发以太坊,在2014年7月,发起了一个为了项目开发募资的众筹,2015年7月30日以太坊区块链正式启动,从此以太坊的理念变成了一个真实的、可运行的网络。
02 以太坊的含义
虽然’比特币’和’以太坊’是经常被搭配在一起的术语,但现实是它们有很大的不同。以太坊与比特币的唯一共同点是,都是一种运行在区块链之上的加密资产。但以太坊不仅仅是一种加密货币,它还具有一些功能,这些功能使它成为一个巨大的去中心化的计算机。所以比特币是一个分布式的账本,主要的功能是记账。而以太坊则可以理解为一个分布式计算平台,不仅可以记账,还可以在上面运行程序。分布式计算平台,说明以太坊也和比特币一样,是去中心化的,由分布在世界各地的节点共同记账,共同维护一个账本,账本公开透明且不可篡改。但与比特币不同的是,以太坊提供了一套图灵完备的脚本语言,也就是说,我们能在以太坊上开发应用程序。这些应用程序需要以太坊网络的节点托管、运行,我们在以太坊上转账也需要节点们来记账,为此,我们需要支付这些节点费用。比特币网络中,我们转账支付的手续费是比特币BTC,系统给矿工的奖励也是比特币;在以太坊网络中,支付的手续费和系统给节点的奖励是以太币ETH。也可以把以太坊理解成是一个完全去中心化的计算机,分布在全球各地,在全球范围的多个计算机上验证、存储和复制交易数据(因此术语叫“分布式账本”)。03 以太坊的关键:智能合约
如果以太坊仅仅是一个分布式计算机,可以在上面运行程序,这还不足以让它成为“区块链2.0”。以太坊的真正杀手锏是它有智能合约的功能。什么是智能合约呢?简单理解,智能合约就是可以自动执行的合同。举个例子,想象一下,你和我就明天的天气打了个赌。我打赌明天会是晴天,而你打赌会是雨天。我们约定,输家必须给赢家100美元。我们怎样才能做到这一点,并确保输家会遵守承诺呢?我可以想到三种不同的方法。
1.互相信任
最简单的方法是相互信任。如果我们现在已经做了很长时间的朋友,信任对方是很容易的。我知道你住在哪里,你也知道关于我的各种令人尴尬的事情。但如果我们是完全陌生的人,事情就会变得更加困难。你没有理由相信我,我也没有理由相信你。
2.签署一份法律协议
另一个合理的方法是将我们的赌注拟定为一份法律协议。我们双方将签署一份协议,详细定义我们赌注的所有条款—包括如果输家违反协议会发生什么。
该协议将使我们在法律上有义务支付赢家,但它不会起到任何实际作用,因为通过法律途径强制执行该协议的费用会比赌注的价值更高。
3.从一个共同的朋友那里获得帮助
我们可以找到一个共同的朋友,我们都信任他/她,然后我们都给他/她每人100美元作为保管费。第二天,他/她会检查天气,并将总额200美元交给赢得赌局的人。简单而容易,但是如果那个值得信赖的朋友拿着200美元跑了怎么办?
