用于与 Activeledger 集成的 PHP 包

0.0.1 2018-11-02 17:00 UTC

This package is not auto-updated.

Last update: 2024-10-01 21:20:06 UTC


README

Activeledger

Activeledger - PHP SDK

Activeledger PHP SDK 已构建,以提供一种简单的方法将您的 PHP 网络应用程序连接到 Activeledger 网络

Activeledger

访问 Activeledger.io

阅读 Activeledgers 文档

安装

$ composer require activeledger/sdk ~0.0.1
$ composer install -o

用法

SDK 当前支持以下功能

  • 连接处理
  • 密钥生成
  • 密钥注册
  • 交易构建
  • 加密和非加密交易发布

一旦安装了 SDK,请使用自动加载器导入类

require __DIR__ . '/vendor/autoload.php';

连接

发送交易时,您必须传递一个连接,该连接提供建立与网络和指定节点的链接所需的信息。

为此,必须创建一个连接对象。此对象必须传递协议、地址、端口和加密标志。

示例

require __DIR__ . '/vendor/autoload.php';

// Setup the connection object to use localhost over http unencrypted
$connection = new activeledger\sdk\Connection("http", "127.0.0.1", 5260, false);

// Use localhost but encrypt transactions
$connection = new activeledger\sdk\Connection("http", "127.0.0.1", 5260, true);

密钥

可以使用 Key 类生成密钥。

目前可以生成两种类型的密钥,更多类型计划中,并将首先在 Activeledger 中实现。这些类型是 RSA 和椭圆曲线。

生成密钥

生成密钥时,默认为椭圆曲线密钥。返回的对象将是 KeyIdentity 类。

示例
require __DIR__ . '/vendor/autoload.php';

// Generate Elliptic Key
$identity = activeledger\sdk\Key::generateKeyIdentity();

// Generate RSA Key
$identity = activeledger\sdk\Key::generateKeyIdentity("rsa");

注册密钥

一旦您生成了一个密钥,为了使用它来签名交易,它必须注册到账本网络中

示例
require __DIR__ . '/vendor/autoload.php';

// Create Connection
$connection = new activeledger\sdk\Connection("http", "127.0.0.1", 5260, false);

// Generate Key
$identity = activeledger\sdk\Key::generateKeyIdentity();

try {
    // Onboard Key
    $stream = $identity->onBoard($connection);
}catch(Exception $error) {
    // Manage any exceptions such as consensus problem or transport errors
    die($error->getMessage());
}

导出密钥

要保存密钥以供以后使用,您可以使用 php serialize 函数

require __DIR__ . '/vendor/autoload.php';

// Generate Key
$identity = activeledger\sdk\Key::generateKeyIdentity();

// Store object as a safe string
$export = base64_encode(serialize($identity));

导入密钥

您可以使用 php unserialize 函数导入密钥,该函数将恢复对象

require __DIR__ . '/vendor/autoload.php';

// Restore KeyIdentity Object from the exported safe string
$identity = serialize(base64_decode($export))

交易

Transaction 类包含一个静态函数,有助于构建 Activeledger 交易对象。

require __DIR__ . '/vendor/autoload.php';

// Generate Activeledger Transaction
$transaction = activeledger\sdk\Transaction::build(
    "Contract Stream / Label",
    "Namespace",
    // Input Streams (Requires Signatures)
    array("Identity Stream" => array()),
    // Outputs
    array("Outputs: Identity Stream" => array()),
    // Read Only Streams
    array("Reads : Label" => "Idenity Stream")
);

签名并发送交易

在签名交易时,您必须发送其完成版本。签名后不能进行任何更改,因为这会导致账本拒绝它。

密钥必须是已成功注册到要发送交易的账本的密钥。

示例
require __DIR__ . '/vendor/autoload.php';

// Create Connection
$connection = new activeledger\sdk\Connection("http", "127.0.0.1", 5260, false);

// Generate Key
$identity = activeledger\sdk\Key::generateKeyIdentity();

try {
    // Onboard Key
    $stream = $identity->onBoard($connection);

    // Generate Activeledger Transaction
    $transaction = activeledger\sdk\Transaction::build(
        "0000482232bcca98e3f2b375e6209400e185fae26efad7812268d7d66b321131",
        "example-namespace",
        // Input Streams (Requires Signatures)
        array($stream => array("text" => "Hello World"))
    );

    // Get signed version of this transaction
    $signedTx = $identity->sign($transaction)

    // Submit
    $response = $connection->send($signedTx);

    // Response object will contain the streams property.
    $response->streams->new; // Contains created Activity Streams
    $response->streams->updated; // Contains updated Activity Streams

}catch(Exception $error) {
    // Manage any exceptions such as consensus problem or transport errors
    die($error->getMessage());
}

许可

本项目受MIT 许可协议许可