WavesKit - 用于使用 Waves 区块链的 PHP 框架

Мненравится PHP 以实现开发速度和出色的可移植性。 当你口袋里总有一个工具随时可以解决问题时,这是非常好的。

刚开始接触国内区块链的时候,挺遗憾的 Waves平台 他的武器库中没有现成的 PHP SDK。 好吧,我必须写它。

起初我不得不使用 节点 签署交易。 所以,要管理三个地址,就需要启动三个节点……虽然解决了一些问题,但还是很可怜。 直到人们认识到依赖节点是一条死胡同。 首先,由于功能有限 API,其次是因为速度(那时候节点非常慢)。

我开始了两份并行的工作。 一是制作一个快速且完全独立于节点 API 的区块链浏览器。 第二个是将 Waves 平台使用的所有功能集中在一处。 项目就是这样出现的 w8io и 波浪工具包.

Waves 区块链幕后的第一步是 w8io浏览器。 这并不容易,但我们仍然设法编写了所有余额的独立计算,甚至发现原始节点上的计算有错误(错误赏金计划 顺便说一句,这对他们有用,他们为发现的错误付出代价)。 您可以在本主题中了解有关 w8io 浏览器功能的更多信息: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

在开发 w8io 时,我已经产生了怀疑,但是当工作达到逻辑终点并且我开始创建 SDK 时,我的怀疑得到了证实。 我在任何地方都找不到一些功能,包括最重要的功能,即加密功能。 然后我开始自己制作地基砖。 他们是这样诞生的: AB码 编码为base58(实际上是将任何字母编码为任何), Curve25519 创建和验证兼容的签名(使用选项 服用类固醇), 布雷克2b 计算哈希值之一(仅自 PHP 7.2 起可用)等。

这就是我要感谢的地方 伊娜拉·卡丹诺娃 一些宝贵的建议为我指明了方向 撰写 而不是我熟悉但过时的包含文件。

几个月后 WavesKit 发布, 出来 测试版 现在已准备好使用 Waves 平台的所有标准功能。 全部可用 主网 只需使用一个包即可轻松创建、签名和发送交易,该包可在 PHP 64 及以上的所有 5.6 位版本上运行。

我们将 WavesKit 连接到我们的项目:

composer require deemru/waveskit

我们用:

use deemruWavesKit;
$wk = new WavesKit( 'T' );
$wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' );
$tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) );
$tx = $wk->ensure( $tx );

在上面的示例中,我们创建了一个在“T”测试网上运行的 WavesKit 对象。 我们安装一个种子短语,根据公钥自动计算密钥和帐户地址。 接下来,我们创建一笔转账交易 0.00000001 Waves,从使用助记词自动计算的地址到别名地址“test”,转账以使用私钥签名并发送到网络。 之后,我们确保交易成功被网络确认。

事务处理工作集中于 以 tx 开头的函数。 为了更好地理解事务处理,您可以学习 WavesKit 文档 或立即转向说明性示例 持续集成测试.

由于 WavesKit 已在实际使用中开发,因此它已经具有高级功能。 第一个杀手级功能是 确保功能,它控制着交易没有丢失,而是被确认并达到网络中所需确认数量的所需置信度的实现。

另一个防弹机制是 WavesKit 如何与节点通信。 在温室条件下,该框架仅与主节点一起工作,与其保持持续连接,但如果出现错误,它可以自动切换到备份节点。 如果设置了备份节点数组,可以调用该函数 设置最佳节点 根据当前高度的最大值和响应速度确定最佳节点作为主节点。 现在添加一个内部查询缓存,并感受到对用户和节点所有者的关心。

最新的先进机制之一是功能 发送监视器。 它的出现是因为需要实时响应传入的交易。 该功能完全解决了与处理区块链中的交易相关的所有细微差别。 不再痛苦,只需使用所需的选项设置回调函数,然后等待新事务启动您的流程即可。 例如我的另一个项目 维可罗 完全围绕这个功能构建,您可以轻松地直接研究它是如何工作的 在项目代码中.

我喜欢开源,这是人类最伟大的成就之一。 由于我是唯一的开发者,并且已经达到了我所有需求都得到解决的状态,因此我邀请您使用并做出贡献 波浪工具包.

来源: habr.com

添加评论