php工程师进行以太坊开发的教程
以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术 构建了一个去中心化的平台,所有的交易同步保存在每个节点中, 通过将区块单向级联成链,以太坊有效的保证了交易的不可篡改:
智能合约平台
以太坊是第一个实现了虚拟机的区块链,因此为智能合约 - Smart Contract - 的运行提供了良好的支持环境。也正因为这个原因,以太坊被称为区块链 2.0,以区别于比特币代表的以数字加密货币为核心特征的区块链1.0。
可以将智能合约理解为机器之间的合同约定,在满足一定条件时自动 执行约定好的逻辑,例如在保险理赔流程中,如果理赔条件满足就自动 将赔偿金释放给出险人,这个流程就可以使用智能合约来实现。
有多种语言可以开发以太坊智能合约,但目前最常用的是类似于JavaScript的 Solidity语言。本课程中将采用Solidity讲解智能合约的开发。
JSON-RPC
如果我们希望构造一个去中心化应用(DApp),除了智能合约的开发, 通常还需要使用其他开发语言为用户提供操作智能合约的用户接口,例如 开发一个网页、一个手机App或者一个桌面应用。这些代码都需要与以太坊 进行交互。
以太坊规定了每个节点需要实现的JSON RPC API 应用开发接口,该接口是传输无关的,应用程序可以通过HTTP、websocket或IPC等多种 通信机制来使用该接口协议操作以太坊节点:
理论上你可以使用任何语言基于JSON RPC接口开发出以太坊之上的 去中心化应用,不过为了提高开发效率,更好的办法是 使用特定语言的JSON RPC封装库,这些库封装了JSON RPC的协议细节, 有助于开发人员聚焦在业务逻辑的实现上。
不过在php社区中,目前还缺乏得到统一认可的、相对比较成熟的以太坊开发包,在DApp的开发过程中,往往需要综合利用多方面的代码资源才能解决 问题。
课程地址:
http://xc.hubwiz.com/course/5b36629bc02e6b6a59171de3
课程内容
本课程的目的是帮助php工程师快速掌握开发以太坊应用的技能,同时穿插 讲解以太坊的一些基本概念,例如:账户、交易和智能合约的开发等。
第二章 Hi,以太坊
这一章将通过一个简单的php应用的开发来讲解使用 php进行以太坊应用开发的最简流程,通过这一部分的学习,你就可以在自己 的php应用中引入基本的以太坊支持了。
第三章 账户管理
这一章将详细介绍以太坊的账户管理接口。如果你 对开发中心化钱包应用感兴趣,或者需要在自己的网站中动态创建账户(例如,你 希望为网站增加对以太坊支付的支持),那么这部分内容会有很大的帮助。
第四章 理解状态与交易
这一章主要讲解以太坊的交易操作接口,同时也介绍一些 重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理清php 应用与以太坊交互的大多数问题。
第五章 智能合约的开发、部署与交互
这一章将通过一个ERC20代币合约的开发、编译、代码生成、部署与交互 的完整流程,讲解使用php操作solitiy合约的方法。如果你希望为自己的 网站增加代币支持,这一部分的内容是必须的。
第六章 过滤器与事件
这一章主要讲解以太坊的通知机制以及如何在php中使用过滤器来监视 块和交易的生成与合约事件的触发。
课程为每个知识点都提供了相应的预置代码,你可以在实验环境的~/repo 目录下查看。
课内php的小例子
使用php获取节点版本信息。
我们在php代码中发送http请求包就可以了。你可以使用任何一个你喜欢的http库例如curl、guzzle等, 甚至直接使用socket来调用以太坊的JSON RPC API。
例如,下面的代码使用guzzle库:
<?php $client = new GuzzleHttp\Client(); $opts = [ 'json' => [ 'jsonrpc' => '2.0', 'method' => 'web3_clientVersion', 'params' => [], 'id' => time() ] ]; $rsp = $client->post('http://localhost:8545',$opts); echo $rsp->getBody() . PHP_EOL; ?>
把上面的内容保存为raw-test.php,然后执行:
~$ php rpc-guzzle.php
你应当就可以看到结果了。
大家可以访问这里php以太坊,本教程详细讲解如何使用Php开发语言为网站增加以太坊区块链支持,课程内容即涉及以太坊中的核心概念,例如账户管理、状态与交易、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使用Php与以太坊进行交互,是Php工程师学习以太坊应用开发的不二选择。
另外推荐几个教程:
- web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j开发详解。
- 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
年中终结
简单总结: 7月2号,去年这个时候刚到北京,转眼一年一过,时间匆匆! 这一年发生很多事情,有生活有工作的,主要谈谈工作吧。 找工作还算顺利吧,7月2号到北京,找了一星期,7月11号就正式入职了。 刚开始对开发流程比较不熟悉,有些慢,一个简单项目过后,接下来就是“复制->粘贴”了。 在不断学习,又学习了进程通信、网络编程,这块记得多而且用得少,所以要勤看;现在还在学习C++,之前想看数据结构,但觉得C写数据结构有些麻烦,确实如此,C++在数据结构、字符串等许多方面,都比C简单好用些。 但觉得学的杂没有系统化学习,而且缺少项目经验,真的项目经验真的很重要,学很多但不做项目,记不住而且不能发现问题,所以平台很重要,能让你提高很快!!! 接下来的一年,要有系统化深入的学习,自己的不足还有很多,继续加油,为近期的梦想奋斗!!! 对以下几个方面做总结: 现状 想成为什么样的人 做了什么有意义的事,距离目标还有多远 认知上有什么进步 有没有更认识自己 有什么后悔的事 自己需要反复看的话 现状: 依然在去年毕业的公司,想过换工作,但觉得比较麻烦,换个工作还要换住的地方; 想成为什么样的人: 想成...
- 下一篇
字节码
这篇文章主要内容来自"深入java虚拟机",刚毕业那会太急功近利,这块离业务代码太远就没细看。这次花点时间整理一下,加深对字节码的认识。 类文件结构 “一次编写,到处运行”表达的是“与平台无关”。如何做到“与平台无关”?Sun公司以及其他虚拟机提供商发布了许多可以运行在各种平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(class文件)。 Java虚拟机的野心远不止做到“与平台无关”,Java虚拟机还做到“语言无关性”。Java虚拟机支持其他语言的代码通过对应语言的编译器,编译成字节码,从而运行在Java虚拟机之上。 Class文件是一组以8位字节为基础单元的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符。Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有两种数据类型:无符号数 和 表。 表1:Class文件格式定义 名称 类型 数量 描述 magic u4 1 class文件的识别码,固定,为“0xCAFFBABE” minor_version u2 1 次版本号,JDK1.7_u91,其中91就...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块