Primas SDK of PHP (v3)
Rely
Sign with a signature machine, (*1)
"php": ">=7.0",
"ext-gmp": "*",
"guzzlehttp/guzzle": "~6.0"
Sign with the keystore, (*2)
"php-64bit": ">=7.0",
"ext-gmp": "*",
"ext-scrypt": "~1.4",
"ext-secp256k1": ">=0.1.0",
"ext-keccak": "~0.2",
"guzzlehttp/guzzle": "~6.0",
"bitwasp/buffertools": "^0.5.0"
Install
- 1ăUse Git to clone the entire repository in the root folder, or export a zip of the repository and extract locally.
- 2ăcomposer require primas/node
Quick Start
- Note: the API configuration needs to be initialized before using the API method
- If you need a large integer, use it as a string
Example, (*3)
create root account
* Remember to save the root account id, (*4)
$config = [
"http_options" => [
"base_uri" => "https://staging.primas.io" // testnet
]
];
$app = \Primas\Factory::account($config);
// Sign with the keystore
// Import the keystore
$keystore = '{"version":3,"id":"e1a1909a-7a38-44aa-af04-61cd3a342008","address":"d75407ad8cabeeebfed78c4f3794208b3339fbf4","Crypto":{"ciphertext":"bcf8d3037432f731d3dbb0fde1b32be47faa202936c303ece7f53890a79f49d2","cipherparams":{"iv":"e28edaeff90032f24481c6117e593e01"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"7d7c824367d7f6607128c721d6e1729abf706a3165384bbfc2aae80510ec0ce2","n":1024,"r":8,"p":1},"mac":"52f98caaa4959448ec612e4314146b6a2d5022d5394b77e31f5a79780079c22f"}}';
$password = "Test123:::";
\Primas\Kernel\Eth\Keystore::init($keyStore, $password);
$parameters = [
"name" => "Test123",
"abstract" => "first test",
"created" => time(),
"address" => (string)\Primas\Kernel\Eth\Keystore::getAddress();
];
$metadataJson = $app->buildCreateAccount($parameters);
$signature = $app->sign($metadataJson);
$metadata = $app->setSignature($metadataJson, $signature);
$res = $account->createAccount($metadata);
// ......
// Sign with a signature machine
$parameters = [
"name" => "Test123",
"abstract" => "first test",
"created" => time(),
"address" => "0xd75407ad8cabeeebfed78c4f3794208";
];
$metadataJson = $app->buildCreateAccount($parameters);
// TODO request signature machine get signature
// If it is asynchronous, save the correspondence between the signature result and the application.
$signature="your signature from your signature machine";
$metadata = $app->setSignature($metadataJson, $signature);
$res = $account->createAccount($metadata);
var_dump($res);
// save the root account id
// save the root account id
// save the root account id
// result
/*
array(3) {
["result_code"]=>
int(0)
["result_msg"]=>
string(7) "success"
["data"]=>
array(2) {
["id"]=>
string(64) "e19aa9a8cdc217c345925b7e824baea0ef6dab0e11117dfd2746be469b412724"
["dna"]=>
string(64) "4659b4848c8e9e3ec60c94ded2cc58a35419411f58ff27dc51f116bb05577eb9"
}
}
*/
Factory
1ăstatic method
/**
* Class Factory
*
* @method static \Primas\Account\Application account(array $config)
* @method static \Primas\Content\Application content(array $config)
* @method static \Primas\ContentInteraction\Application content_interaction(array $config)
* @method static \Primas\Group\Application group(array $config)
* @method static \Primas\Node\Application node(array $config)
* @method static \Primas\Query\Application query(array $config)
* @method static \Primas\System\Application system(array $config)
* @method static \Primas\TimeLine\Application time_line(array $config)
* @method static \Primas\Token\Application token(array $config)
*
* @package Primas
*/
class Factory
{
...
}
2ăconfig introduce
$config = [
/*
* refer guzzle http document http://guzzle.readthedocs.io/en/stable/request-options.html
*/
"http_options" => [
"base_uri" => BASE_URI, // default https://rigel-a.primas.network
"headers" => [
/*
* default application/json
* when Content-Type is multipart/form-data,if you want to post a file,the file field should be a file path like "F:/tmp/test.png" or an object instance CURLFile
*/
"Content-Type" => "application/json" //
// ...
],
],
/*
* root account id
*/
"account_id" => $account_id
];
API List
Error Code and Troubleshooting
result_code |
result_msg |
description |
0 |
success |
Success |
400 |
client error |
Client error |
401 |
invalid data |
Invalid post data |
402 |
parse input JSON format error |
Invalid JSON string |
403 |
client signature error |
Signature verification failed |
404 |
input parameter error |
Invalid parameter |
405 |
input parameter empty |
Empty parameter |
406 |
nonce less than lasted |
Nonce is used before |
500 |
server error |
Server error |