mercator/dcorephp-sdk

DCore PHP SDK 库

2.5.0 2019-07-29 12:44 UTC

README

访问 DCore 区块链的 API 集合。
如果您正在寻找其他平台,您可以在以下位置找到信息:此处

要求

安装

composer.json

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/decentfoundation/dcorephp-sdk"
        }
    ],
    "require": {
        "decentfoundation/dcorephp-sdk": "dev-master"
    }
}
composer require decentfoundation/dcorephp-sdk

用法

您可以在这里找到包含 SDK 用法的示例项目。

您可以在这里找到最新版本的开发者文档。

DCore API 初始化

$dcoreApi = new \DCorePHP\DCoreApi(
    'https://testnet.dcore.io/',
    'wss://testnet-socket.dcore.io'
);

查看 ./src/DCoreApi.php 和 ./src/Sdk/*Interface.php,以了解所有可用方法和它们的返回值。

获取账户

$account = $dcoreApi->getAccountApi()->get(new ChainObject('1.2.34'));
$account = $dcoreApi->getAccountApi()->getByName('Your test account name');

创建账户

在 DCore 网络中创建账户有两种方式:$dcoreApi->getAccountApi()->registerAccount()$dcoreApi->getAccountApi()->createAccountWithBrainKey()。建议使用 $dcoreApi->getAccountApi()->registerAccount() 方法创建账户,因为它可以指定密钥。您也可以使用 $dcoreApi->getAccountApi()->createAccountWithBrainKey(),但从 $brainkey 生成的 $publicOwnerKeyWif$publicActiveKeyWif$publicMemoKeyWif 密钥将相同,出于安全考虑不推荐。

$dcoreApi->getAccountApi()->registerAccount(
    'Your test account name',
    'DCT6MA5TQQ6UbMyMaLPmPXE2Syh5G3ZVhv5SbFedqLPqdFChSeqTz',
    'DCT6MA5TQQ6UbMyMaLPmPXE2Syh5G3ZVhv5SbFedqLPqdFChSeqTz',
    'DCT6MA5TQQ6UbMyMaLPmPXE2Syh5G3ZVhv5SbFedqLPqdFChSeqTz',
    new ChainObject('1.2.34'),
    '5Jd7zdvxXYNdUfnEXt5XokrE3zwJSs734yQ36a1YaqioRTGGLtn'
);

创建转账

$dcoreApi->getAccountApi()->transfer(
    new Credentials(new ChainObject('1.2.34'), '5Jd7zdvxXYNdUfnEXt5XokrE3zwJSs734yQ36a1YaqioRTGGLtn'),
    '1.2.35',
    (new AssetAmount())->setAmount(1500000),
    'your secret message',
    false
);

创建内容

$content = new SubmitContent();
$content
    ->setUri($randomUri)
    ->setCoauthors([])
    ->setCustodyData(null)
    ->setHash('2222222222222222222222222222222222222222')
    ->setKeyParts([])
    ->setSeeders([])
    ->setQuorum(0)
    ->setSize(10000)
    ->setSynopsis(json_encode([
        'title' => 'Your content title',
        'description' => 'Your content description',
        'content_type_id' => '1.2.3'
    ]))
    ->setExpiration('2019-05-28T13:32:34+00:00')
    ->setPrice([(new RegionalPrice)->setPrice((new AssetAmount())->setAmount(1000))->setRegion(1)]);

$credentials = new Credentials(
    new ChainObject('1.2.34'),
    ECKeyPair::fromBase58(DCoreSDKTest::PRIVATE_KEY_1)
);

$dcoreApi->getContentApi()->create(
    $content,
    $credentials,
    (new AssetAmount())->setAmount(1000)->setAssetId('1.3.0'),
    (new AssetAmount())->setAmount(1000)->setAssetId('1.3.0')
);

搜索内容

$contents = $dcoreApi->getContentApi()->findAll(
    'search term',
    '-rating'
);

NFT

NftModels 需要 @Type("type") 注解才能正常工作。当与整数一起工作时,也需要 必须 使用 GMP 库

NftModel

class NftApple extends NftModel
{
    /**
     * @Type("integer")
     */
    public $size;
    /**
     * @Type("string")
     * @Unique
     */
    public $color;
    /**
     * @Type("boolean")
     * @Modifiable("both")
     */
    public $eaten;

    public function __construct($size, $color, $eaten)
    {
        $this->size = gmp_init($size);
        $this->color = $color;
        $this->eaten = $eaten;
    }
}

创建 NFT

$credentials = new Credentials(new ChainObject('1.2.27'), ECKeyPair::fromBase58('DCT6MA5TQQ6UbMyMaLPmPXE2Syh5G3ZVhv5SbFedqLPqdFChSeqTz'));
$dcoreApi->getNftApi()->create($credentials, 'APPLE', 100, false, 'an apple', NftApple::class, true);

更多示例可以在 ./tests/Sdk/NftApiTest.php 中找到。

开发要求和建议

PHPStorm 配置

开发和测试

git clone git@github.com:decentfoundation/dcorephp-sdk.git
cd dcorephp-sdk
docker-compose up -d
docker-compose exec php composer install --dev --prefer-dist --optimize-autoloader
docker-compose exec php ./vendor/bin/phpunit --bootstrap vendor/autoload.php tests

其他平台的官方 DCore SDK