WavesKit-PHP Waves区块链框架

我喜欢PHP的开发速度和出色的可移植性。 当总是有准备解决口袋中​​问题的工具时,这非常好。


当与国内的Waves Platform区块链会面时,其库中没有现成的PHP SDK时,这真令人失望。 好吧,我不得不写它。


首先,我必须使用节点来签署交易。 因此,要管理三个地址,必须启动三个节点。虽然确实解决了一些问题,但这是一个悲惨的景象。 直到了解到依赖节点是死胡同。 首先,由于API的功能有限,其次,由于速度(在那时,节点非常慢)。


我开始了两个平行的工作。 一种是使区块链浏览器变得快速,完全独立于API节点。 第二个是将所有与Waves平台一起使用的功能收集在一个地方。 因此,有项目w8ioWavesKit


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


在开发w8io的过程中,我已经有疑问,但是当工作按逻辑结束并开始创建SDK时,这些疑问得到了证实。 我在任何地方都找不到某些功能,包括最重要的加密功能。 然后,我开始为基础创建自己的积木。 因此他们诞生了: ABCode用于在base58中进行编码(实际上用于对任何字母进行编码), Curve25519用于创建和检查兼容的签名( 在类固醇上带有选项), Blake2b用于计算一个哈希(仅从PHP 7.2开始可用)等


在这里,我要感谢Inal Kardanov提供的一些有价值的技巧,这些技巧将我引向了作曲家,而不是通常但过时的包含文件。


几个月后, WavesKit亮了起来 ,离开了Beta版本 ,现在可以使用所有标准Waves平台功能了。 只需使用运行在5.6(含5.6)及以上版本的PHP的所有64位版本上的一个程序包,即可轻松创建,签名和发送主网络上可用的所有事务。


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


composer require deemru/waveskit 

我们使用:


 use deemru\WavesKit; $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如何与节点通信。 在温室条件下,该框架仅适用于主节点,并与主节点保持稳定的连接,但是如果发生错误,它可以自动切换到备用节点。 如果安装了一组备份节点,则可以调用setBestNode函数,以通过当前高度和响应速度的最大值确定最佳节点为主要节点。 现在,将其添加到内部查询缓存中,并感受到用户和节点所有者的关心。


最新的高级机制之一是txMonitor函数。 她的出现与实时响应传入交易的需求有关。 该功能完全解决了与处理区块链交易相关的所有细微差别。 不必再费劲了,只需使用所需的选项安装回调函数,然后等待将启动您的进程的新事务。 例如,我的另一个VECRO项目完全基于此功能构建的,您可以轻松地直接在项目代码中了解其工作方式。


我喜欢开源,这是人类最大的成就之一。 由于我是唯一的开发人员,并且已经解决了我的所有需求,因此,我邀请您使用WavesKit并做出贡献。

Source: https://habr.com/ru/post/zh-CN446110/


All Articles