我喜欢PHP的开发速度和出色的可移植性。 口袋里有这样的工具,随时准备解决问题,真是太好了。
对我来说,我第一次遇到这个漂亮的区块链时就没有针对PHP的Waves Platform SDK感到非常难过。 好吧,我不得不写这样的工具包。
起初,我什至用我的节点来签署交易。 因此,要运行3个地址,我必须运行3个节点……这很可悲,但解决了一些任务。 直到有一种理解,依靠节点是死胡同。 首先,由于缺乏功能,其次, 节点API速度很慢(在当时是非常慢的)。
我开始了2项并行工作。 一个是区块链资源管理器,它必须快速并且完全不依赖节点API。 另一个是使用Waves Platform所需的所有功能的集合。 这就是w8io和WavesKit等项目的诞生方式。
Waves 区块链幕后的第一步是w8io Explorer 。 很难,但我仍然设法编写了所有余额的独立计算,甚至在原始节点上的计算中发现了一个错误(顺便说一句, 漏洞赏金计划有效,他们为错误付出了代价)。 您可以在本主题中了解有关w8io资源管理器功能的更多信息: https ://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite
完成后,我继续下一步,但找不到构建块,甚至对于最重要的部分,也找不到密码。 因此,我开始制作自己的基本软件包。 这就是ABCode用于base58编码的方式(大多数情况下实际上是任何字母), Curve25519用于符号和验证功能的受支持变体( 在类固醇变体上), Blake2b用于哈希功能(仅在PHP 7.2的Sodium库中出现)等
在这里,我应该感谢Inal Kardanov提出的一些提示,这些提示将我引导到了作曲家的方式,而不是包括旧文件在内。
几个月后, WavesKit退出了测试阶段 ,现在可以使用标准的Waves Platform功能了。 所有主网交易都可让用户轻松地在一个软件包中创建,签名和广播,该软件包可在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 );
在上面的示例中,我们创建了WavesKit对象,该对象在测试网“ T”中工作。 我们设置了种子密码,从中自动计算出密钥和公钥中的地址。 接下来,我们创建一个从所计算的地址到别名为“ test”的地址的0.00000001 Waves的传输事务,将该事务传递给使用所计算的私钥功能进行签名,并将其广播到网络。 之后,我们确保交易已成功由网络确认。
处理事务集中在带有“ tx”前缀的函数中 。 为了更好地了解如何使用事务,您可以学习WavesKit文档或立即参考持续集成测试中的实际用法示例。
由于WavesKit在实际案例中不断发展,因此具有高级功能。 首先, 确保您可以使用该功能来获得所需的置信度,以确保您的交易不会丢失,但会被确认并达到所需的确认数。
另一个防弹机制是它如何与节点交互。 如果发生主节点错误,则具有回退到备份节点的内部能力。 您可以将一组备份节点设置为回退。 您可以调用setBestNode函数以根据最高高度和最短响应时间自动选择当前最适合的节点。 现在,将内部缓存机制和连接保留到其武器库中,您不仅可以感受到用户的关心,也可以感受到节点所有者的关心。
最新的高级功能之一是txMonitor功能。 看来有必要对传入的交易做出实时反应。 该功能完全解决了区块链中有关交易处理的所有问题。 无需再为开发人员烦恼,只需设置回调函数和所需的选项,然后等待新的事务触发您的流程即可。 例如,我的VECRO项目完全基于此txMonitor函数,请随时学习其工作原理 。
我喜欢开源,这是人类最大的成就之一。 由于我是该框架的唯一开发人员,并且已经解决了我的所有需求,因此,我欢迎您使用WavesKit并为之做出贡献。