primas / node
Ethereum secp256k1 library in PHP
v0.1
2018-08-01 07:52 UTC
Requires
- php: >=7.0
- ext-gmp: *
- ext-keccak: ~0.2
- ext-scrypt: ~1.4
- ext-secp256k1: ^0.1.3
- bitwasp/buffertools: ^0.5.0
- guzzlehttp/guzzle: ~6.0
This package is not auto-updated.
Last update: 2025-03-30 07:56:43 UTC
README
- Primas Node API Documentation https://github.com/primasio/primas-api-doc
Rely
Sign with a signature machine
"php": ">=7.0",
"ext-gmp": "*",
"guzzlehttp/guzzle": "~6.0"
Sign with the keystore
"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"
- ext-scrypt: https://github.com/DomBlack/php-scrypt
- ext-secp256k1: https://github.com/Bit-Wasp/secp256k1-php
- ext-keccak: https://github.com/EricYChu/php-keccak-hash
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
create root account
- Remember to save the root account id
$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
- An array type
$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
- Content APIs
- Content Interaction APIs
- 1. Get share metadata
- 2. Get the shares of a group share
- 3. Get share reports
- 4. Report share
- 5. Get the likes of a group share
- 6. Like a group share
- 7. Cancel the like of a group share
- 8. Get the comments of a group share
- 9. Get replying comments of a comment
- 10. Comment a group share
- 11. Update the comment of a group share
- 12. Delete the comment of a group share
- Group APIs
- 1. Get group metadata
- 2. Create group
- 3. Update group
- 4. Dismiss group
- 5. Get group members
- 6. Join group
- 7. Approve or decline member application
- 8. Quit group or kick member out
- 9. Get group member whitelist
- 10. Add group member whitelist
- 11. Approve or decline group member whitelist
- 12. Quit group member whitelist
- 13. Get group shares
- 14. Share to a group
- 15. Approve or decline share application
- 16. Delete group share
- 17. Get group avatar metadata
- 18. Get group avatar raw image
- Account APIs
- 1. Get account metadata
- 2. Create account
- 3. Update account metadata
- 4. Get account credits list
- 5. Get account content list
- 6. Get account groups list
- 7. Get account shares
- 8. Get account shares in a single group
- 9. Get account likes
- 10. Get account comments
- 11. Get account group applications
- 12. Get account share applications
- 13. Get account report list
- 14. Get account notifications
- 15. Get account avatar metadata
- 16. Get account avatar raw image
- Token APIs
- Timeline APIs
- Query APIs
- System APIs
- Node APIs
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 |