php工程师进行以太坊开发的教程

简介: 以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术 构建了一个去中心化的平台,所有的交易同步保存在每个节点中, 通过将区块单向级联成链,以太坊有效的保证了交易的不可篡改:智能合约平台以太坊是第一个实现了虚拟机的区块链,因此为智能合约 - Smart Contract - 的运行提供了良好的支持环境。

以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术 构建了一个去中心化的平台,所有的交易同步保存在每个节点中, 通过将区块单向级联成链,以太坊有效的保证了交易的不可篡改:

chain

智能合约平台

以太坊是第一个实现了虚拟机的区块链,因此为智能合约 - 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封装库,这些库封装了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实战,适合进阶。

相关文章
|
4天前
|
缓存 安全 PHP
【PHP开发专栏】Symfony框架核心组件解析
【4月更文挑战第30天】本文介绍了Symfony框架,一个模块化且高性能的PHP框架,以其可扩展性和灵活性备受开发者青睐。文章分为三部分,首先概述了Symfony的历史、特点和版本。接着,详细解析了HttpFoundation(处理HTTP请求和响应)、Routing(映射HTTP请求到控制器)、DependencyInjection(管理依赖关系)、EventDispatcher(实现事件驱动编程)以及Security(处理安全和认证)等核心组件。
|
4天前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
|
4天前
|
数据库连接 PHP 数据库
【PHP开发专栏】PHP错误处理与异常捕获
【4月更文挑战第30天】PHP是流行的服务器端脚本语言,广泛用于动态网站和应用开发。本文深入探讨PHP的错误处理和异常捕获机制,分为三部分:首先介绍PHP错误处理,包括错误级别(如E_NOTICE、E_WARNING、E_ERROR)和错误处理函数;其次,讲解异常捕获,利用try-catch处理程序错误,自定义异常类;最后,讨论两者在数据库操作、文件操作和网络请求等场景的应用及最佳实践。示例代码展示了如何自定义错误处理器和异常处理。
|
4天前
|
安全 前端开发 PHP
采用PHP开发的医院安全(不良)事件系统源码 医院不良事件有哪些?又该怎样分类呢?也许这篇文章能给予你答案。
医疗安全不容忽视! 医疗不良事件有哪些?又该怎样分类呢?也许这篇文章能给予你答案。
17 1
采用PHP开发的医院安全(不良)事件系统源码 医院不良事件有哪些?又该怎样分类呢?也许这篇文章能给予你答案。
|
4天前
|
监控 安全 PHP
采用PHP开发的不良事件管理系统源码vue2+element医院不良事件上报系统的意义 AEMS系统源码
不良事件管理系统(AEMS)是一种用于医疗行业的解决方案,它主要用于处理和管理临床不良事件。这些不良事件是指由医疗导致的伤害,与疾病的自然转归相反,可能延长病人的住院时间或导致残疾。AEMS的目标是揭示系统的不足与缺陷,减少不良事件对病人、家属、医护人员和医院声誉的影响。
26 1
|
4天前
|
安全 测试技术 PHP
掌握现代Web开发:PHP 8的新特性与最佳实践
【5月更文挑战第5天】 在当今快速发展的网络世界中,PHP作为一种流行的服务器端脚本语言,持续地演化着。最新的PHP 8版本引入了一系列令人兴奋的新特性和性能改进,为开发者提供了更加强大和灵活的工具。本文将深入探讨PHP 8中的新特性,包括联合类型、名称参数、匹配表达式等,并分享一些最佳实践,帮助开发者提高代码质量,优化性能,并确保安全性。通过这些实用技巧和示例,您将能够构建更高效、更安全的PHP应用程序。
|
4天前
|
IDE 网络安全 PHP
IJ中PHP环境的搭建和使用教程
搭建PHP环境与配置IDE,在学习网络安全的过程中,了解并掌握编程语言是必要的。本文主要介绍了如何搭建PHP开发环境以及在IntelliJ IDEA (IJ) 中配置PHP环境,以方便进行PHP代码的编写和测试。本章是在学习网络安全过程中,我们需要对两门编程语言有所了解,今天要进行的就是其中的一门.
|
4天前
|
编译器 API PHP
深入PHP扩展开发:打造高效自定义模块
【4月更文挑战第30天】 在追求性能优化和特定功能实现的道路上,PHP提供了一种强大机制——扩展。本文将引导读者通过编写一个简单的PHP扩展来探索扩展开发的世界。我们将涉及从环境搭建到代码实现,再到扩展的编译与加载的完整流程,确保读者能够理解并实践如何创建高效的自定义PHP模块。
|
4天前
|
SQL 安全 PHP
【PHP开发专栏】PHP预处理语句与安全性
【4月更文挑战第30天】PHP预处理语句提升Web开发安全与性能。本文分三部分介绍原理、使用方法及安全性。预处理语句防止SQL注入,提高代码可维护性和性能。创建预处理语句对象,绑定参数,执行并释放资源。通过占位符增强代码可读性,减少数据库负担,实现高效查询。
|
4天前
|
安全 PHP
【PHP开发专栏】PHP文件上传与下载实现
【4月更文挑战第30天】本文介绍了在PHP中实现文件上传和下载的详细步骤。文件上传通过`$_FILES`全局数组处理,包括设置HTML表单、PHP脚本处理上传及安全性考虑。文件下载则可使用`readfile()`、`fpassthru()`或`file_get_contents()`函数,同时关注安全问题,如防止目录遍历漏洞。文中还提供了一个简单的图片分享网站案例,演示了上传和下载功能的集成。