opensourcewebsite-org / php-stellar-sdk
PHP 语言的Stellar Horizon客户端库
Requires
- christian-riesen/base32: ^1.3
- guzzlehttp/guzzle: ^6.2
- paragonie/sodium_compat: ^1.0
- phpseclib/phpseclib: ^2.0.6
- symfony/filesystem: ^4.1
Requires (Dev)
- phpunit/phpunit: ^6.4
README
PHP Stellar SDK提供了构建和签名交易、连接和查询Stellar Horizon服务器的API。
该库正在积极开发中,应被视为Beta版本。请确保您已在测试网络上进行了充分测试,并在代码的其他地方添加了健全性检查。
该存储库是OpenSourceWebsite组织的一部分。本项目以及所有参与其中的人都受到行为准则的约束。
入门
请参阅入门目录中的该库使用示例。更多示例可在示例目录中找到。
请阅读Stellar API文档和Stellar Testnet文档。
贡献
请阅读我们的贡献指南。
安装
安装此扩展的首选方式是通过composer。
运行以下命令:
composer require opensourcewebsite-org/php-stellar-sdk
或者
"opensourcewebsite-org/php-stellar-sdk": "*"
将以下内容添加到您的composer.json
文件的require部分。
使用
大整数支持
在64位平台上,PHP的最大整数是64位的。这对于处理大额转账尤其重要。单个XLM(1 XLM)的原生表示是10000000 stroops。
因此,如果您尝试使用MAX_INT
数量的XLM(或自定义资产),在值转换为stroops并发送到网络时,可能会超出PHP的整数类型。
该库尝试为此场景添加检查,并使用BigInteger
类来解决这个问题。
如果您的应用程序使用大量XLM或自定义资产,请对大值进行广泛测试,并在可能的情况下使用StellarAmount
辅助类或BigInteger
类。
浮点问题
尽管这并非特定于Stellar或PHP,但在比较浮点数时需要注意问题。
例如
$oldBalance = 1.605; $newBalance = 1.61; var_dump($oldBalance + 0.005); var_dump($newBalance); if ($oldBalance + 0.005 === $newBalance) { print "Equal\n"; } else { print "Not Equal\n"; }
上面的代码认为这两个值不相等,尽管打印出了相同的值
输出
float(1.61)
float(1.61)
Not Equal
为了解决这个问题,始终以整数形式处理和存储金额,表示stroops。只有当您需要向用户显示余额时,才将其转换回十进制数字。
可以使用静态属性StellarAmount::STROOP_SCALE
来帮助进行此转换。
测试
$ composer test
反馈
若要请求新功能、提交错误报告、提供反馈、开始设计讨论或有改进此代码的想法,请随意创建一个issue,或创建一个pull request。
请将所有安全问题发送到security@opensourcewebsite.org。
许可证
本项目为开源项目,在MIT许可证下免费提供。