-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #58 from singnet/development
SDK release v3.4.0
- Loading branch information
Showing
6 changed files
with
200 additions
and
67 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,12 +33,7 @@ config = { | |
"private_key": 'YOUR_PRIVATE_WALLET_KEY', | ||
"eth_rpc_endpoint": f"https://sepolia.infura.io/v3/YOUR_INFURA_KEY", | ||
"email": "[email protected]", | ||
"free_call_auth_token-bin":"f5533eb0f01f0d45239c11b411bdfd4221fd3b125e4250db1f7bc044466108bc10ce95ab62ae224b6578b68d0ce337b4ec36e4b9dfbe6653e04973107813cbc01c", | ||
"free-call-token-expiry-block":19690819, | ||
"concurrency": False, | ||
"org_id": "organization_id", | ||
"service_id": "id_of_the_service", | ||
"group_name": "default_group", | ||
"identity_name": "local_name_for_that_identity", | ||
"identity_type": "key", | ||
"network": "sepolia", | ||
|
@@ -55,46 +50,66 @@ See [test_sdk_client.py](https://github.com/singnet/snet-sdk-python/blob/master/ | |
private_key: Your wallet's private key that will be used to pay for calls. Is **required** to make a call; | ||
eth_rpc_endpoint: RPC endpoint that is used to access the Ethereum network. Is **required** to make a call; | ||
email: Your email; | ||
"free_call_auth_token-bin" and "free-call-token-expiry-block": Are used to make free calls. See more on that below; | ||
org_id: ID of the organization that owns the service you want to call. Is **required** to make a call; | ||
service_id: ID of the service you want to call. Is **required** to make a call; | ||
identity_name: Name that will be used locally to save your wallet settings. You can check your identities in the `~/.snet/config` file; | ||
identity_type: Type of your wallet authentication. Note that snet-sdk currently supports only "key" identity_type; | ||
network: You can set the Ethereum network that will be used to make a call; | ||
force_update: If set to False, will reuse the existing gRPC stubs (if any) instead of downloading proto and regenerating them every time. | ||
|
||
##### List organizations and their services | ||
|
||
After executing this code, you should have client libraries created for this service. They are located at the following path: `~/.snet/org_id/service_id/python/` | ||
You can use the sdk client instance`s methods get_organization_list() to list all organizations and get_services_list("org_id") to list all services of a given organization. | ||
|
||
Note: Currently you can only save files to `~/.snet/`. We will fix this in the future. | ||
```python | ||
print(snet_sdk.get_organization_list()) | ||
print(snet_sdk.get_services_list("26072b8b6a0e448180f8c0e702ab6d2f")) | ||
``` | ||
|
||
##### Free call configuration | ||
|
||
If you want to use a free call you need to add these attributes to the config dictionary: | ||
If you want to use the free calls you will need to pass these arguments to the create_service_client() method: | ||
|
||
``` | ||
"free_call_auth_token-bin":"f2548d27ffd319b9c05918eeac15ebab934e5cfcd68e1ec3db2b92765", | ||
"free-call-token-expiry-block":172800, | ||
"email":"[email protected]" | ||
``` | ||
You can receive these for a given service from the [Dapp](https://beta.singularitynet.io/) | ||
#### Calling the service | ||
Now, the instance of the sdk can be used to create the service client instances. | ||
Continuing from the previous code this is an example using `Exampleservice` from the `26072b8b6a0e448180f8c0e702ab6d2f` organization: | ||
Continuing from the previous code here is an example using `Exampleservice` from the `26072b8b6a0e448180f8c0e702ab6d2f` organization: | ||
|
||
```python | ||
service_client = snet_sdk.create_service_client(org_id="26072b8b6a0e448180f8c0e702ab6d2f", | ||
service_id="Exampleservice", | ||
group_name="default_group") | ||
``` | ||
Creating a service client with free calls included would look like this: | ||
```python | ||
service_client = snet_sdk.create_service_client(org_id="26072b8b6a0e448180f8c0e702ab6d2f", | ||
service_id="Exampleservice", | ||
group_name="default_group", | ||
free_call_auth_token_bin="f2548d27ffd319b9c05918eeac15ebab934e5cfcd68e1ec3db2b92765", | ||
free_call_token_expiry_block=172800) | ||
``` | ||
|
||
After executing this code, you should have client libraries created for this service. They are located at the following path: `~/.snet/org_id/service_id/python/` | ||
|
||
Note: Currently you can only save files to `~/.snet/`. We will fix this in the future. | ||
```python | ||
service_client = snet_sdk.create_service_client() | ||
service_client.deposit_and_open_channel(123456, 33333) | ||
``` | ||
`deposit_and_open_channel()` function deposits the specified amount of AGIX tokens in cogs into an MPE smart contract and opens a payment channel. | ||
The instance of service_client that has been generated can be utilized to invoke the methods that the service offers. | ||
To do this, use the the call_rpc method. This method needs the names of the method and data object, along with the data itself, to be passed into it. | ||
The specific data that needs to be passed can be found in the .proto file. Building upon the previously written code, here’s an example that uses the *Exampleservice* from the *26072b8b6a0e448180f8c0e702ab6d2f* organization: | ||
`deposit_and_open_channel(amount, expiration)` function deposits the specified amount of AGIX tokens in cogs into an MPE smart contract and opens a payment channel. Expiration is payment channel's TTL in blocks. | ||
The instance of service_client that has been generated can be utilized to invoke the methods that the service offers. You can list these using the get_services_and_messages_info_as_pretty_string() method: | ||
```python | ||
result = service_client.call_rpc("mul", "Numbers", a=20, b=3) | ||
print(f"Performing 20 * 3: {result}") # Performing 20 * 3: value: 60.0 | ||
print(service_client.get_services_and_messages_info_as_pretty_string()) | ||
``` | ||
|
||
You can get this code example at [https://github.com/singnet/snet-code-examples/tree/python_client/python/client](https://github.com/singnet/snet-code-examples/tree/python_client/python/client) | ||
To invoke the service`s methods, you can use the the call_rpc() method. This method requires the names of the method and data object, along with the data itself, to be passed into it. | ||
To continue with our example, here’s a call to the *mul* method of the *Exampleservice* from the *26072b8b6a0e448180f8c0e702ab6d2f* organization: | ||
|
||
```python | ||
result = service_client.call_rpc("mul", "Numbers", a=20, b=3) | ||
print(f"Calculating 20 * 3: {result}") # Calculating 20 * 3: 60.0 | ||
``` | ||
|
||
For more information about gRPC and how to use it with Python, please see: | ||
- [gRPC Basics - Python](https://grpc.io/docs/tutorials/basic/python.html) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.