From 674ce759625fbbcb4d42a78b9b60f3e4c36ff33b Mon Sep 17 00:00:00 2001 From: anandrgitnirman Date: Thu, 11 Jun 2020 12:01:41 +0530 Subject: [PATCH 1/9] #140 Architecture of Daemon --- _data/navigation.yml | 14 ++++-- assets/img/daemon/stateservice.png | Bin 0 -> 26052 bytes docs/platform-dev/daemon-architecture.md | 43 +++++++++++++++++++ docs/platform-dev/daemon-coding-standards.md | 0 docs/platform-dev/deamon-setup.md | 0 5 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 assets/img/daemon/stateservice.png create mode 100644 docs/platform-dev/daemon-architecture.md create mode 100644 docs/platform-dev/daemon-coding-standards.md create mode 100644 docs/platform-dev/deamon-setup.md diff --git a/_data/navigation.yml b/_data/navigation.yml index 87dcb64b..1169c2ba 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -440,9 +440,17 @@ platform-dev: url: '/docs/platform-dev/registry' daemon: title: Daemon - excerpt: How to communicate with SingularityNET services with the stateless method. - cta: Read more - url: '/docs/platform-dev/daemon' + children: + introduction: + title: Daemon + excerpt: How to communicate with SingularityNET services with the stateless method. + cta: Read more + url: '/docs/platform-dev/daemon' + architecture: + title: Architecture + excerpt: Architechtire of all key components in Daemon + url: '/docs/platform-dev/daemon-architecture.md' + mpe: title: Multi-Party Escrow excerpt: How to communicate with SingularityNET services with the stateless method. diff --git a/assets/img/daemon/stateservice.png b/assets/img/daemon/stateservice.png new file mode 100644 index 0000000000000000000000000000000000000000..a64d0dbf89662d5c432ba0ed3a5fd784db3cec7f GIT binary patch literal 26052 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�hUI%(P25f6^FBGsyc^&dh*DhTSjy6lY0M^Z@ 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 literal 0 HcmV?d00001 diff --git a/docs/platform-dev/daemon-architecture.md b/docs/platform-dev/daemon-architecture.md new file mode 100644 index 00000000..6f718c5f --- /dev/null +++ b/docs/platform-dev/daemon-architecture.md @@ -0,0 +1,43 @@ +--- +# Page settings +layout: default +keywords: intro concepts +comments: false + +# Micro navigation +micro_nav: true + +--- + +## State Service Calls + +As the name suggests, this call will be used by the client to determine the next amount to sign to make a service call. + +Daemon keeps track of the off chain state of the channel +Details involve Channel Id Nonce,Amount signed , Signature and the nonce of the channel +, and in order to sign the amount for the next call, the client needs to know the amount it had last signed (X), the new call will be signed with an amount X + P , where X is the last signed amount and P is the price + +Daemon also sends back the last signed signature of the old nonce ( in case a claim is in progress or a claim was made) + + +![components](/assets/img/daemon/stateservice.png) + + +## Pay Per use calls + +## Concurrent calls + + +## Control Service Calls + +### List-unclaimed requests + + +### Start-claim request/requests + + +### List-in-progress + + + + diff --git a/docs/platform-dev/daemon-coding-standards.md b/docs/platform-dev/daemon-coding-standards.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/platform-dev/deamon-setup.md b/docs/platform-dev/deamon-setup.md new file mode 100644 index 00000000..e69de29b From 5558d348512691c8c846495e3cf989232391c4c6 Mon Sep 17 00:00:00 2001 From: anandrgitnirman Date: Thu, 11 Jun 2020 14:25:56 +0530 Subject: [PATCH 2/9] #140 Architecture of Daemon , added details on pay per use call --- _data/navigation.yml | 2 +- assets/img/daemon/payperusecalll.png | Bin 0 -> 64058 bytes docs/platform-dev/daemon-architecture.md | 9 ++++----- 3 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 assets/img/daemon/payperusecalll.png diff --git a/_data/navigation.yml b/_data/navigation.yml index 1169c2ba..1d1864c5 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -449,7 +449,7 @@ platform-dev: architecture: title: Architecture excerpt: Architechtire of all key components in Daemon - url: '/docs/platform-dev/daemon-architecture.md' + url: '/docs/platform-dev/daemon-architecture' mpe: title: Multi-Party Escrow diff --git a/assets/img/daemon/payperusecalll.png b/assets/img/daemon/payperusecalll.png new file mode 100644 index 0000000000000000000000000000000000000000..eecc9b47c85a750a968141c1fb1afedfcb0c5c98 GIT binary patch literal 64058 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⁣6gob$EKzOfzM5sBKJ0l|KQxZ_*B<<|kx01{ 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 literal 0 HcmV?d00001 diff --git a/docs/platform-dev/daemon-architecture.md b/docs/platform-dev/daemon-architecture.md index 6f718c5f..37ffe04d 100644 --- a/docs/platform-dev/daemon-architecture.md +++ b/docs/platform-dev/daemon-architecture.md @@ -20,12 +20,12 @@ Details involve Channel Id Nonce,Amount signed , Signature and the nonce of the Daemon also sends back the last signed signature of the old nonce ( in case a claim is in progress or a claim was made) -![components](/assets/img/daemon/stateservice.png) +![Stateservice](/assets/img/daemon/stateservice.png) ## Pay Per use calls - -## Concurrent calls +The client signs in for the next cumulative amount ( i.e X+P), where X is the amount last amount signed on the given Channel Id and Nonce +![Pay per use](/assets/img/daemon/payperusecalll.png) ## Control Service Calls @@ -35,9 +35,8 @@ Daemon also sends back the last signed signature of the old nonce ( in case a cl ### Start-claim request/requests - ### List-in-progress - +## Concurrent calls From 26225d9276982973d06045de70b7d6a2ed6f14bb Mon Sep 17 00:00:00 2001 From: anandrgitnirman Date: Fri, 12 Jun 2020 12:31:50 +0530 Subject: [PATCH 3/9] #140 Architecture of Daemon , added details free call design --- assets/img/daemon/freecallstate.png | Bin 0 -> 103586 bytes docs/platform-dev/daemon-architecture.md | 42 +++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 assets/img/daemon/freecallstate.png diff --git a/assets/img/daemon/freecallstate.png b/assets/img/daemon/freecallstate.png new file mode 100644 index 0000000000000000000000000000000000000000..504d58e1d99efc78d16cb1dce06e90fa2063451d GIT binary patch literal 103586 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 literal 0 HcmV?d00001 diff --git a/docs/platform-dev/daemon-architecture.md b/docs/platform-dev/daemon-architecture.md index 37ffe04d..2bbc671a 100644 --- a/docs/platform-dev/daemon-architecture.md +++ b/docs/platform-dev/daemon-architecture.md @@ -28,15 +28,57 @@ The client signs in for the next cumulative amount ( i.e X+P), where X is the am ![Pay per use](/assets/img/daemon/payperusecalll.png) +## Free Calls + +### How many free Calls are Left ? +As a service provider one may wish to provide free calls . +However you need some validations to ensure , that only authorized users can make this call and as a service provider you would want to +restrict the number of such free calls made. + +To even check if free calls are allowed, you need to send in Daemon +a signature and a token + +![Free Call use](/assets/img/daemon/freecallstate.png) + +### Making an Actual Free Call +If the Signatures are valid,Daemon increments the usage count by 1. +The Signature validations and authentication is exactly the same as +explained , just that the ETCD State is upated with usage accordingly + ## Control Service Calls ### List-unclaimed requests +As a first step the service provider needs to be aware of all the +unclaimed money +Service Provider needs to send the following message (using snet-cli/publisher portal): +mpe_address, current_block_number, signature(“__list_unclaimed”, mpe_address, current_block_number) +After receiving this message, daemon does the following: +Verify that mpe_address is correct +Verify that actual block_number is not very different (+-5 blocks) from the current_block_nubmer from the signature +Verify that message was signed by the service provider (“payment_address” in metadata). +Send list of unclaimed payments without signatures (we don’t send signatures here just to be safe!!!) ### Start-claim request/requests +using snet-cli the following message: +mpe_address, channel_id, signature(“__start_claim”, mpe_address, channel_id, channel_nonce) + +After receiving this message, daemon does the following: +Check that current channel nonce in blockchain is equal to nonce of the channel in etcd. It means that all previous payments on this channel was claimed already. +Daemon should remove all payments with nonce < channel_nonce from payment storage. +Verify that signature is authentic ( “payment_address” is in metadata !) +Increase nonce in storage and send last payment with old nonce to the caller (snet-cli/publisher portal) + + ### List-in-progress +Before sending a list of payments, daemon should remove all payments with nonce < blockchain nonce from payment storage (call finalize on them?). It means that daemon removes all payments which were claimed already. + + ## Concurrent calls +## Signature Details + +For exact details on signatures please refer to [snet-daemon](https://github.com/singnet/snet-daemon/blob/master/escrow/README.md) From 173ee78fba366c7a40de582ccf9d0c15a20f93c4 Mon Sep 17 00:00:00 2001 From: anandrgitnirman Date: Fri, 12 Jun 2020 12:58:54 +0530 Subject: [PATCH 4/9] #140 Architecture of Daemon , added details claims --- docs/platform-dev/daemon-architecture.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/platform-dev/daemon-architecture.md b/docs/platform-dev/daemon-architecture.md index 2bbc671a..62c805ab 100644 --- a/docs/platform-dev/daemon-architecture.md +++ b/docs/platform-dev/daemon-architecture.md @@ -34,7 +34,6 @@ The client signs in for the next cumulative amount ( i.e X+P), where X is the am As a service provider one may wish to provide free calls . However you need some validations to ensure , that only authorized users can make this call and as a service provider you would want to restrict the number of such free calls made. - To even check if free calls are allowed, you need to send in Daemon a signature and a token @@ -47,6 +46,13 @@ explained , just that the ETCD State is upated with usage accordingly ## Control Service Calls +Please note, Daemon doesnt do any claims on blockchain, it is responsible +ONLY for maintaining the states. +Actual claims can done using snet-cli/publisher portal +Daemon provides a bunch of grpc calls to retrieve data the service provider needs to make claims on block chain. +Keeps track of claims in Progress. +One can view all the data using cli commands in snet-daemon + ### List-unclaimed requests As a first step the service provider needs to be aware of all the unclaimed money From 64464b8178e89b41a26902168569c2f33cde3fb7 Mon Sep 17 00:00:00 2001 From: anandrgitnirman Date: Fri, 12 Jun 2020 15:20:36 +0530 Subject: [PATCH 5/9] #140 Architecture of Daemon , added details claims --- assets/img/daemon/listInProgress.png | Bin 0 -> 63452 bytes docs/platform-dev/daemon-architecture.md | 11 +++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 assets/img/daemon/listInProgress.png diff --git a/assets/img/daemon/listInProgress.png b/assets/img/daemon/listInProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf4c900c7f64d3d086cf1b5c790f2a1d2a7a134 GIT binary patch literal 63452 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 {&w53Ho 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

Explore

{% for menu in nav_tree %} {% assign children = menu[1].children %} - {% assign menu_url = menu[1].url | split: "/" %} +

{{ crumbs }}

+ {% if children and crumbs == 'index.md' %} + {% for child in children %} + {% assign menu_url = child[1].url %} + {% assign menu_crumbs = menu_url | split: "/" %} + {% assign crumbs = menu_crumbs[0] %} + {% assign section = crumbs %} + {% break %} + {% endfor %} + {% else %} + {% assign menu_url = menu[1].url | split: "/" %} + {% endif %} {% assign menu_url_last_inx = path_url.size | minus: 1 %} {% assign file_name = menu_url[menu_url_last_inx] | append: ".md" %} {% assign section_file_name = section | append: ".md" %} {% assign classname = "has-submenu"%} {% if crumbs == file_name or file_name == section_file_name and crumbs == 'index.md' %} - {% assign classname = "active has-submenu test "%} - {% assign page_title=menu[1].title %} + {% assign classname = "active has-submenu test "%} + {% assign page_title=menu[1].title %} {% endif %} + + {% if children %} - {% assign unique_id = menu[1].title | replace: " ","--" %} + {% assign unique_id = menu[1].title | replace: " ","--" %} - {% for child in children %} - {% assign child_url = child[1].url | split: "/" %} - {% assign child_url_last_inx = child_url.size | minus: 1 %} - {% assign child_file_name = child_url[child_url_last_inx] | append: ".md" %} - {% assign ul_class = "collapse" %} - {% assign li_class = "" %} - {% assign a_class = "collapsed" %} - {% if crumbs == child_file_name %} - {% assign ul_class = "collapse show" %} - {% assign a_class = "" %} - {% assign active_child_title = child[1].title %} - {% break %} - {% endif %} - {% endfor %} -
  • - - {{ menu[1].title }} - expand_more - expand_less - -
      - {% for child in children %} + {% for child in children %} + {% assign child_url = child[1].url | split: "/" %} + {% assign child_url_last_inx = child_url.size | minus: 1 %} + {% assign child_file_name = child_url[child_url_last_inx] | append: ".md" %} + {% assign ul_class = "collapse" %} {% assign li_class = "" %} - {% if active_child_title == child[1].title %} - {% assign page_title=active_child_title %} - {% assign li_class = "active" %} + {% assign a_class = "collapsed" %} + {% if crumbs == child_file_name %} + {% assign ul_class = "collapse show" %} + {% assign a_class = "" %} + {% assign active_child_title = child[1].title %} + {% break %} {% endif %} -
    • {{ child[1].title }}
    • - {% endfor %} -
    -
  • + {% endfor %} +
  • + + {{ menu[1].title }} + expand_more + expand_less + +
      + {% for child in children %} + {% assign li_class = "" %} + {% if active_child_title == child[1].title %} + {% assign page_title=active_child_title %} + {% assign li_class = "active" %} + {% endif %} +
    • {{ child[1].title }}
    • + {% endfor %} +
    +
  • {% else %} -
  • - {{ menu[1].title }} -
  • +
  • + {{ menu[1].title }} +
  • {% endif %} {% endfor %} {% endif %} diff --git a/todo.txt b/todo.txt new file mode 100644 index 00000000..d094bf60 --- /dev/null +++ b/todo.txt @@ -0,0 +1,2 @@ +- Delete grpc.md from ai-developers +- Delete etcd.md from ai-developers \ No newline at end of file From 36f798f609827be852f6c4d4be57b1394a82cc90 Mon Sep 17 00:00:00 2001 From: raamb Date: Tue, 28 Jul 2020 13:49:53 +0530 Subject: [PATCH 9/9] Fixed typos in service invocation module --- _data/navigation.yml | 24 +++++------ theme/_layouts/default.html | 85 ++++++++++++++++--------------------- 2 files changed, 47 insertions(+), 62 deletions(-) diff --git a/_data/navigation.yml b/_data/navigation.yml index 1cc2bf2c..456bbabb 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -93,7 +93,6 @@ concepts: ethereum: title: Ethereum cta: Read more - url: '/docs/concepts/ethereum' children: ethereum-overview: title: Overview @@ -126,16 +125,15 @@ concepts: url: "/docs/concepts/grpc" distributed-storage: title: "Distributed Storage" - url: '/docs/concepts/etcd' children: etcd: title: etcd excerpt: cta: Read more url: '/docs/concepts/etcd' - key-terms: - title: "Key terms" - url: "/docs/concepts/keyterms" + #key-terms: + # title: "Key terms" + # url: "/docs/concepts/keyterms" tutorials: @@ -241,22 +239,22 @@ ai-consumers: cta: Read more url: '/docs/ai-consumers/setupguide' invoke-serivce-snet-cli: - title: Invoking a Serice using snet-cli + title: Invoking a Service using snet-cli excerpt: cta: Read more url: '/docs/ai-consumers/invoke-service-snet-cli' invoke-serivce-dapp: - title: Invoking a Serice using Marketplace Dapp + title: Invoking a Service using Marketplace Dapp excerpt: cta: Read more url: '/docs/ai-consumers/marketplace-service_invocation' invoke-serivce-java-sdk: - title: Invoking a Serice using Java sdk + title: Invoking a Service using Java sdk excerpt: cta: Read more url: '/docs/ai-consumers/java-sdk' invoke-serivce-sdk: - title: Invoking a Serice using sdk + title: Invoking a Service using sdk excerpt: cta: Read more url: '/docs/ai-consumers/sdk-tutorial' @@ -403,22 +401,22 @@ ai-developers: cta: Read more url: '/docs/ai-developers/service-setup-snet-cli' invoke-serivce-snet-cli: - title: Invoking a Serice using snet-cli + title: Invoking a Service using snet-cli excerpt: cta: Read more url: '/docs/ai-developers/invoke-service-snet-cli' invoke-serivce-dapp: - title: Invoking a Serice using Marketplace Dapp + title: Invoking a Service using Marketplace Dapp excerpt: cta: Read more url: '/docs/ai-developers/marketplace-service_invocation' invoke-serivce-java-sdk: - title: Invoking a Serice using Java sdk + title: Invoking a Service using Java sdk excerpt: cta: Read more url: '/docs/ai-developers/java-sdk' invoke-serivce-sdk: - title: Invoking a Serice using sdk + title: Invoking a Service using sdk excerpt: cta: Read more url: '/docs/ai-developers/sdk-tutorial' diff --git a/theme/_layouts/default.html b/theme/_layouts/default.html index bf836af7..7a7a75d2 100644 --- a/theme/_layouts/default.html +++ b/theme/_layouts/default.html @@ -54,66 +54,53 @@

    Explore

    {% for menu in nav_tree %} {% assign children = menu[1].children %} -

    {{ crumbs }}

    - {% if children and crumbs == 'index.md' %} - {% for child in children %} - {% assign menu_url = child[1].url %} - {% assign menu_crumbs = menu_url | split: "/" %} - {% assign crumbs = menu_crumbs[0] %} - {% assign section = crumbs %} - {% break %} - {% endfor %} - {% else %} - {% assign menu_url = menu[1].url | split: "/" %} - {% endif %} + {% assign menu_url = menu[1].url | split: "/" %} {% assign menu_url_last_inx = path_url.size | minus: 1 %} {% assign file_name = menu_url[menu_url_last_inx] | append: ".md" %} {% assign section_file_name = section | append: ".md" %} {% assign classname = "has-submenu"%} {% if crumbs == file_name or file_name == section_file_name and crumbs == 'index.md' %} - {% assign classname = "active has-submenu test "%} - {% assign page_title=menu[1].title %} + {% assign classname = "active has-submenu test "%} + {% assign page_title=menu[1].title %} {% endif %} - - {% if children %} - {% assign unique_id = menu[1].title | replace: " ","--" %} + {% assign unique_id = menu[1].title | replace: " ","--" %} - {% for child in children %} - {% assign child_url = child[1].url | split: "/" %} - {% assign child_url_last_inx = child_url.size | minus: 1 %} - {% assign child_file_name = child_url[child_url_last_inx] | append: ".md" %} - {% assign ul_class = "collapse" %} + {% for child in children %} + {% assign child_url = child[1].url | split: "/" %} + {% assign child_url_last_inx = child_url.size | minus: 1 %} + {% assign child_file_name = child_url[child_url_last_inx] | append: ".md" %} + {% assign ul_class = "collapse" %} + {% assign li_class = "" %} + {% assign a_class = "collapsed" %} + {% if crumbs == child_file_name %} + {% assign ul_class = "collapse show" %} + {% assign a_class = "" %} + {% assign active_child_title = child[1].title %} + {% break %} + {% endif %} + {% endfor %} +
  • + + {{ menu[1].title }} + expand_more + expand_less + +
      + {% for child in children %} {% assign li_class = "" %} - {% assign a_class = "collapsed" %} - {% if crumbs == child_file_name %} - {% assign ul_class = "collapse show" %} - {% assign a_class = "" %} - {% assign active_child_title = child[1].title %} - {% break %} + {% if active_child_title == child[1].title %} + {% assign page_title=active_child_title %} + {% assign li_class = "active" %} {% endif %} - {% endfor %} -
    • - - {{ menu[1].title }} - expand_more - expand_less - -
        - {% for child in children %} - {% assign li_class = "" %} - {% if active_child_title == child[1].title %} - {% assign page_title=active_child_title %} - {% assign li_class = "active" %} - {% endif %} -
      • {{ child[1].title }}
      • - {% endfor %} -
      -
    • +
    • {{ child[1].title }}
    • + {% endfor %} +
    +
  • {% else %} -
  • - {{ menu[1].title }} -
  • +
  • + {{ menu[1].title }} +
  • {% endif %} {% endfor %} {% endif %}

    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 literal 0 HcmV?d00001 diff --git a/docs/platform-dev/daemon-architecture.md b/docs/platform-dev/daemon-architecture.md index 62c805ab..b4e8040a 100644 --- a/docs/platform-dev/daemon-architecture.md +++ b/docs/platform-dev/daemon-architecture.md @@ -53,6 +53,11 @@ Daemon provides a bunch of grpc calls to retrieve data the service provider need Keeps track of claims in Progress. One can view all the data using cli commands in snet-daemon + +No write operation on block chains are done by Daemon (will be take care of by the snet client ), Finish on the claim(reset channel amount used to zero!) should be called only after the payment is successfully claimed and block chain is updated accordingly. +One way to determine this is by checking the nonce in the block chain with the nonce in the payment,for a given channel if the block chain nonce is greater than that of the nonce from etcd storage => that the claim is already done in block chain. +and the Finish method is called on the claim. + ### List-unclaimed requests As a first step the service provider needs to be aware of all the unclaimed money @@ -61,7 +66,7 @@ mpe_address, current_block_number, signature(“__list_unclaimed”, mpe_address After receiving this message, daemon does the following: Verify that mpe_address is correct -Verify that actual block_number is not very different (+-5 blocks) from the current_block_nubmer from the signature +Verify that actual block_number is not very different (+-5 blocks) from the current_block_number from the signature Verify that message was signed by the service provider (“payment_address” in metadata). Send list of unclaimed payments without signatures (we don’t send signatures here just to be safe!!!) @@ -78,10 +83,12 @@ Increase nonce in storage and send last payment with old nonce to the caller (sn ### List-in-progress - +Get the list of all claims that have been initiated but not completed yet Before sending a list of payments, daemon should remove all payments with nonce < blockchain nonce from payment storage (call finalize on them?). It means that daemon removes all payments which were claimed already. +![List in Progress](/assets/img/daemon/listInProgress.png) + ## Concurrent calls From 5e5f1aea3522a5ad7a67d5188b949c4552f84376 Mon Sep 17 00:00:00 2001 From: anandrgitnirman Date: Fri, 12 Jun 2020 15:31:03 +0530 Subject: [PATCH 6/9] #140 Architecture of Daemon , unlclaim architecture diagram --- assets/img/daemon/listUnclaimed.png | Bin 0 -> 48527 bytes docs/platform-dev/daemon-architecture.md | 1 + 2 files changed, 1 insertion(+) create mode 100644 assets/img/daemon/listUnclaimed.png diff --git a/assets/img/daemon/listUnclaimed.png b/assets/img/daemon/listUnclaimed.png new file mode 100644 index 0000000000000000000000000000000000000000..754849167bdd998a9b2dc1921f470dee27841826 GIT binary patch literal 48527 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 CLGKp; literal 0 HcmV?d00001 diff --git a/docs/platform-dev/daemon-architecture.md b/docs/platform-dev/daemon-architecture.md index b4e8040a..5a8bad77 100644 --- a/docs/platform-dev/daemon-architecture.md +++ b/docs/platform-dev/daemon-architecture.md @@ -63,6 +63,7 @@ As a first step the service provider needs to be aware of all the unclaimed money Service Provider needs to send the following message (using snet-cli/publisher portal): mpe_address, current_block_number, signature(“__list_unclaimed”, mpe_address, current_block_number) +![List unclaimed](/assets/img/daemon/listUnclaimed.png) After receiving this message, daemon does the following: Verify that mpe_address is correct From e80eeee25b788a1ef07cefd41c275969378441fb Mon Sep 17 00:00:00 2001 From: anandrgitnirman Date: Fri, 12 Jun 2020 20:16:42 +0530 Subject: [PATCH 7/9] #140 Architecture of SDK added new md files --- _data/navigation.yml | 13 +- assets/img/sdk/SDK.svg | 290 ++++++++++++++++++++++++++ docs/platform-dev/sdk-architecture.md | 14 ++ 3 files changed, 316 insertions(+), 1 deletion(-) create mode 100644 assets/img/sdk/SDK.svg create mode 100644 docs/platform-dev/sdk-architecture.md diff --git a/_data/navigation.yml b/_data/navigation.yml index 1d1864c5..8ea7ed10 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -450,7 +450,18 @@ platform-dev: title: Architecture excerpt: Architechtire of all key components in Daemon url: '/docs/platform-dev/daemon-architecture' - + sdk: + title: SDK + children: + introduction: + title: SDK + excerpt: SDK + cta: Read more + url: '/docs/platform-dev/sdk' + architecture: + title: Architecture + excerpt: Architechtire of all key components in Daemon + url: '/docs/platform-dev/sdk-architecture' mpe: title: Multi-Party Escrow excerpt: How to communicate with SingularityNET services with the stateless method. diff --git a/assets/img/sdk/SDK.svg b/assets/img/sdk/SDK.svg new file mode 100644 index 00000000..2a15fcae --- /dev/null +++ b/assets/img/sdk/SDK.svg @@ -0,0 +1,290 @@ +SingularityNet Java SDKio.singularitynet.sdk.paymentio.singularitynet.sdk.ethereumio.singularitynet.sdk.registryio.singularitynet.sdk.mpeio.singularitynet.sdk.daemonio.singularitynet.sdk.clientPaymentvoid toMetadata(Metadata headers);WithAddressAddress getAddress();IdentitySignature sign(byte[] message);PrivateKeyIdentityCredentials getCredentials();MnemonicIdentityEthereumBigInteger getEthBlockNumber();MetadataStoragebyte[] get(URI uri);IpfsMetadataStorageRegistryContractOptional<OrganizationRegistration> getOrganizationById(String orgId);Optional<ServiceRegistration> getServiceRegistrationById(String orgId, String serviceId);MetadataProviderServiceMetadata getServiceMetadata();OrganizationMetadata getOrganizationMetadata();RegistryMetadataProviderMultiPartyEscrowContractOptional<PaymentChannel> getChannelById(BigInteger channelId);Address getContractAddress();PaymentChannel openChannel(Address signer, Address recipient,PaymentGroupId groupId, BigInteger value, BigInteger expiration);void transfer(Address receiver, BigInteger value);Stream<PaymentChannel> getChannelOpenEvents();BigInteger channelAddFunds(BigInteger channelId, BigInteger amount);BigInteger channelExtend(BigInteger channelId, BigInteger expiration);ExtendAndAddFundsResponse channelExtendAndAddFunds(BigInteger channelId,BigInteger expiration, BigInteger amount);EscrowPaymentPaymentPaymentChannelManagerStream<PaymentChannel> getChannelsAccessibleBy(PaymentGroupId paymentGroupId, WithAddress identity);PaymentChannel openPaymentChannel(PaymentGroupId paymentGroupId,Address recipient, WithAddress signer, BigInteger value, BigInteger expiration);PaymentChannel addFundsToChannel(PaymentChannel channel, BigInteger amount);PaymentChannel extendChannel(PaymentChannel channel, BigInteger expiration);PaymentChannel extendAndAddFundsToChannel(PaymentChannel channel,BigInteger expiration, BigInteger amount);MpePaymentChannelManagerDaemonConnection<T> T getGrpcStub(Function<Channel, T> constructor);void setClientCallsInterceptor(ClientInterceptor interceptor);String getEndpointGroupName();void shutdownNow();RandomEndpointDaemonConnectionPaymentChannelStateServicePaymentChannelStateReply getChannelState(BigInteger channelId);PaymentChannelStateProviderPaymentChannel getChannelStateById(BigInteger channelId);AskDaemonFirstPaymentChannelProviderConfigurationURL getEthereumJsonRpcEndpoint();URL getIpfsEndpoint();IdentityType getIdentityType();Optional<String> getIdentityMnemonic();Optional<byte[]> getIdentityPrivateKey();Optional<Address> getRegistryAddress();Optional<Address> getMultiPartyEscrowAddress();ConfigurationUtilsstatic Configuration fromProperties(Properties props);static Configuration fromJson(String json);StaticConfigurationDependencyFactoryWeb3j getWeb3j();IPFS getIpfs();Identity getIdentity();Registry getRegistry();MultiPartyEscrow getMultiPartyEscrow();ConfigurationDependencyFactoryPaymentStrategy<ReqT, RespT> Payment getPayment(GrpcCallParameters<ReqT, RespT> parameters, ServiceClient serviceClient);EscrowPaymentStrategyprotected PaymentChannel selectChannel(ServiceClient serviceClient);FixedPaymentChannelPaymentStrategyOnDemandPaymentChannelPaymentStrategySdkSdk(Configuration config);Sdk(DependencyFactory factory);ServiceClient newServiceClient(String orgId, String serviceId, String endpointGroupName, PaymentStrategy paymentStrategy);Ethereum getEthereum();void transfer(Address toAddress, BigInteger amount);Identity getIdentity();MetadataProvider getMetadataProvider(String orgId, String serviceId);PaymentChannelManager getPaymentChannelManager();void shutdown();ServiceClientMetadataProvider getMetadataProvider();PaymentChannelStateProvider getPaymentChannelStateProvider();T getGrpcStub(Function<Channel, T> constructor);String getEndpointGroupName();void shutdownNow();BaseServiceClient \ No newline at end of file diff --git a/docs/platform-dev/sdk-architecture.md b/docs/platform-dev/sdk-architecture.md new file mode 100644 index 00000000..0f335732 --- /dev/null +++ b/docs/platform-dev/sdk-architecture.md @@ -0,0 +1,14 @@ +--- +# Page settings +layout: default +keywords: intro concepts +comments: false + +# Micro navigation +micro_nav: true + +--- + +# SDK Architecture + +![SDK](/assets/img/sdk/SDK.svg) \ No newline at end of file From ba633441658dee5aa4e7cba81ba877b4c405642b Mon Sep 17 00:00:00 2001 From: raamb Date: Tue, 21 Jul 2020 09:54:27 +0530 Subject: [PATCH 8/9] Updated documentation --- _data/navigation.yml | 23 ++++++--- docs/ai-developers/grpc.md | 2 +- docs/concepts/erc20.md | 1 - docs/concepts/etcd.md | 13 +++++- docs/concepts/grpc.md | 25 ++++++++++ docs/concepts/protobuf-grpc.md | 22 --------- docs/concepts/protobuf.md | 21 +++++++++ theme/_layouts/default.html | 85 ++++++++++++++++++++-------------- todo.txt | 2 + 9 files changed, 126 insertions(+), 68 deletions(-) create mode 100644 docs/concepts/grpc.md delete mode 100644 docs/concepts/protobuf-grpc.md create mode 100644 docs/concepts/protobuf.md create mode 100644 todo.txt diff --git a/_data/navigation.yml b/_data/navigation.yml index 87dcb64b..fd483319 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -92,6 +92,8 @@ concepts: url: "/docs/concepts/blockchain" ethereum: title: Ethereum + cta: Read more + url: '/docs/concepts/ethereum' children: ethereum-overview: title: Overview @@ -116,12 +118,21 @@ concepts: ipfs: title: "IPFS " url: "/docs/concepts/ipfs" - mpe: - title: "Multi-party Escrow" - url: "/docs/concepts/mpe" - staking: - title: "Staking" - url: "/docs/concepts/staking" + protobuf: + title: "Protocol Buffers" + url: "/docs/concepts/protobuf" + grpc: + title: "gRPC" + url: "/docs/concepts/grpc" + distributed-storage: + title: "Distributed Storage" + url: '/docs/concepts/etcd' + children: + etcd: + title: etcd + excerpt: + cta: Read more + url: '/docs/concepts/etcd' key-terms: title: "Key terms" url: "/docs/concepts/keyterms" diff --git a/docs/ai-developers/grpc.md b/docs/ai-developers/grpc.md index 152a20b2..f62dd661 100644 --- a/docs/ai-developers/grpc.md +++ b/docs/ai-developers/grpc.md @@ -9,7 +9,7 @@ micro_nav: true --- -## gRPC Overview +## Overview gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services. By default, gRPC uses protocol buffers as the Interface Definition Language (IDL) for describing both the service interface and the structure of the payload messages. .gRPC Docs is the recommended starting point to understand how this works diff --git a/docs/concepts/erc20.md b/docs/concepts/erc20.md index 6d9749ca..7b6914a8 100644 --- a/docs/concepts/erc20.md +++ b/docs/concepts/erc20.md @@ -8,7 +8,6 @@ comments: false micro_nav: true --- -# ERC-20 Tokens ERC-20 is a standard interface for tokens. It allows any tokens on Ethereum to be re-used by other applications: from wallets to decentralized exchanges. The ERC-20 standard is documented here It defines a standard interface that all tokens should adhere to. This enables users and developers to understand how the token will work in the Ethereum ecosystem. This standardization enables richer interaction between the various tools and usecases built on top of Ethereum diff --git a/docs/concepts/etcd.md b/docs/concepts/etcd.md index 5e6208e1..f3968edd 100644 --- a/docs/concepts/etcd.md +++ b/docs/concepts/etcd.md @@ -1,7 +1,7 @@ --- # Page settings layout: default -keywords: concepts +keywords: intro concepts comments: false # Micro navigation @@ -18,4 +18,13 @@ micro_nav: true * **Fast**: benchmarked 10,000 writes/sec * **Reliable**: properly distributed using Raft -etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log. \ No newline at end of file +etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log. + +## etcd and SingularityNet Platform + +etcd is used as storage to store context related to +* Payments +* Free Call Usage +at an organization level. + +The section [ETCD setup](../etcdsetup) section details how to set up an etcd cluster \ No newline at end of file diff --git a/docs/concepts/grpc.md b/docs/concepts/grpc.md new file mode 100644 index 00000000..4933131f --- /dev/null +++ b/docs/concepts/grpc.md @@ -0,0 +1,25 @@ +--- +# Page settings +layout: default +keywords: intro concepts +comments: false + +# Micro navigation +micro_nav: true + +--- + + +## Overview + +gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services. By default, gRPC uses protocol buffers as the Interface Definition Language (IDL) for describing both the service interface and the structure of the payload messages. gRPC Docs is the recommended starting point to understand how this works. + + +## gRPC and SingularityNet Platform + +AI Services on the Singularitynet platform need to define their API using protocol buffers and expose a gRPC endpoint. This allows SingularityNET clients to determine the request/response schema programmatically. The first step in getting the AI service ready for the SingularityNet platform is to have a proto definition and expose a gRPC endpoint for it. Once this is done, the service can be integrated with the SingulartiyNet Daemon. + +## Samples + +* The example service is an example of a Python arthimetic service with gRPC endpoints and a proto definition. +* These guides are a good starting point to creating gRPC based services \ No newline at end of file diff --git a/docs/concepts/protobuf-grpc.md b/docs/concepts/protobuf-grpc.md deleted file mode 100644 index bda31983..00000000 --- a/docs/concepts/protobuf-grpc.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -# Page settings -layout: default -keywords: intro concepts -comments: false - -# Micro navigation -micro_nav: true - ---- - -##Protofbuf - -Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data. - -To know more refer to [link](https://developers.google.com/protocol-buffers/docs/overview) - - -##GRPC -[What is Grpc](https://www.grpc.io/docs/guides/) - -An [example](https://github.com/singnet/example-service) on Git \ No newline at end of file diff --git a/docs/concepts/protobuf.md b/docs/concepts/protobuf.md new file mode 100644 index 00000000..8d82d850 --- /dev/null +++ b/docs/concepts/protobuf.md @@ -0,0 +1,21 @@ +--- +# Page settings +layout: default +keywords: intro concepts +comments: false + +# Micro navigation +micro_nav: true + +--- + +Protocol Buffers also know as Protobuf, is a method of data serialization. It provides a simple and efficient way of describing data that is to be stored or exchanged between systems. Its similar to XML and JSON but is +much smaller in size thereby improving performance of network communication. The method involves an interface description language that describes the structure of some data and a program that generates source code from that description for generating or parsing a stream of bytes that represents the structured data. + +Google developed Protocol Buffers and provided a code generator for multiple languages under an open source license. + +Data structures (called messages) and services are described in a proto definition file (.proto) and compiled with protoc. This compilation generates code that can be invoked by a sender or recipient of these data structures. For example, example.pb.cc and example.pb.h are generated from example.proto. They define C++ classes for each message and service in example.proto. + +Canonically, messages are serialized into a binary wire format which is compact, forward- and backward-compatible, but not self-describing (that is, there is no way to tell the names, meaning, or full datatypes of fields without an external specification). There is no defined way to include or refer to such an external specification (schema) within a Protocol Buffers file. The officially supported implementation includes an ASCII serialization format,[6] but this format—though self-describing—loses the forward- and backward-compatibility behavior, and is thus not a good choice for applications other than debugging. + +Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data. \ No newline at end of file diff --git a/theme/_layouts/default.html b/theme/_layouts/default.html index 7a7a75d2..bf836af7 100644 --- a/theme/_layouts/default.html +++ b/theme/_layouts/default.html @@ -54,53 +54,66 @@