From 802b7bdbaea4ffd28ac5d54ec4b3d3804f32bfd9 Mon Sep 17 00:00:00 2001 From: zhangmenghang Date: Wed, 26 Dec 2018 02:23:05 +0000 Subject: [PATCH 1/3] add OEP 34 --- OEPS/OEP-34.mediawiki | 151 ++++++++++++++++++++++++++++ resource/OEP-34/oracle-platform.png | Bin 0 -> 36952 bytes resource/OEP-34/simple-oracle.png | Bin 0 -> 47255 bytes 3 files changed, 151 insertions(+) create mode 100644 OEPS/OEP-34.mediawiki create mode 100644 resource/OEP-34/oracle-platform.png create mode 100644 resource/OEP-34/simple-oracle.png diff --git a/OEPS/OEP-34.mediawiki b/OEPS/OEP-34.mediawiki new file mode 100644 index 0000000..4181e8a --- /dev/null +++ b/OEPS/OEP-34.mediawiki @@ -0,0 +1,151 @@ +
+  OEP: 34
+  Title: Ontology Oracle Standard
+  Author: zhangmh
+  Type: Standard
+  Status: Accepted
+  Created: 2018-12-26
+
+ +==Abstract== +The OEP-34 Proposal is a standard interface for Ontology Oracle, this standard allows you to get outside world data via http request in smart contracts. + +==Motivation== +With the development of smart contract DApp, the requirement of using outside world data is more and more intense. For example, a flight insurance smart contract depends on if the flight delayed. But for blockchain, it's hard to get outside world data in smart contracts. + +Ontology Oracle play a role as data carrier and can solve this problem. It makes it possible to obtain outside world data in smart contracts. + +The OEP-34 proposal is the standard specify how the oracle works. + +==Specification== +===Architecture=== +====Simple Oracle Contract==== +Simple oracle contract only have single admin operator account, which used to sign the data and transaction. You can also run several operators with same admin operator account to guarantee operator's availability. + +Admin operator account is defined in simple oracle contract. Oracle fee will be sent to admin and only admin can set oracle outcome. Admin is responsible for the result it provide. + +Simple oracle contract is easy to use for the organization who want to provide data service and want to deploy oracle contract. + +[[Image:/resource/OEP-34/simple-oracle.png|OEP34 simple]] + +====Oracle Contract Platform==== +Not all data service provider want to deploy an oracle contract. They can register their operator account and data method in some "oracle contract platform". Then listen to oracle request in oracle contract platform, obtain and serialize data, sign result and send it to oracle contract platform. Platform verify the signature and put result in contract storage. Oracle fee will be sent to the operator account whose method users invoke. Operator account is responsible for the result it provide. + +Oracle contract platform is designed for someone who want to run a platform that operators can join and provide service without deploying oracle contract. + +[[Image:/resource/OEP-34/oracle-platform.png|OEP34 platform]] + +===Method=== +====CreateOracleRequest==== +
+public static bool CreateOracleRequest(string request, byte[] address)
+
+Create oracle request, accepts two params. + +request string of request body, defines how to get the data and how to serilize the data. + +address the caller's address, will verify it's signature and pay oracle fee. + +====SetOracleOutcome==== +
+public static bool SetOracleOutcome(byte[] txHash, byte[] result)
+
+Set result of the oracle request, must be invoked by oracle contract admin, accepts two params. + +txHash the txHash of oracle request + +result result of the oracle request + +====GetOracleOutcome==== +
+public static byte[] GetOracleOutcome(byte[] txHash)
+
+Returns result according to the txHash of the oracle request, accepts one param. + +txHash the txHash of oracle request + +====RegisterOperator==== +
+public static bool RegisterOperator(string method, byte[] pubKey, byte[] address)
+
+Register an operator to oracle contact, accepts three params. Only available in oracle contract platform. + +method the method that the operator provide, users can use this method in request to get data via this operator + +pubKey the public key of operator wallet + +address the address of operator wallet + +==Oracle Request Format== +Oracle request must satisfy OEP-34 format so that operator can recognize, for example: +
+req = """{
+		"scheduler":{
+			"type": "runAfter",
+			"params": "2018-06-15 08:37:18"
+		},
+		"tasks":[
+			{
+			  "type": "httpGet",
+			  "params": {
+				"url": "https://data.nba.net/prod/v2/20181129/scoreboard.json"
+			  }
+			},
+			{
+				"type": "jsonParse",
+				"params":
+				{
+					"data":
+					[
+						{
+							"type": "Array",
+							"path": ["games"],
+							"sub_type":
+							[
+								{
+									"type": "Struct",
+									"sub_type":
+									[
+										{
+											"type": "String",
+											"path": ["gameId"]
+										},
+										{
+											"type": "String",
+											"path": ["vTeam", "teamId"]
+										},
+										{
+											"type": "String",
+											"path": ["vTeam", "score"]
+										},
+										{
+											"type": "String",
+											"path": ["hTeam", "teamId"]
+										},
+										{
+											"type": "String",
+											"path": ["hTeam", "score"]
+										}
+									]
+								}
+							]
+						}
+					]
+				}
+			}
+		]
+	}"""
+
+ +More oracle request examples see: [[https://github.com/ontio/ontology-oracle | README]] + +==Contract Implementation== +====Example implementations are available at==== +OEP-34 Python Oracle Contract Template: [[https://github.com/ontio/ontology-oracle/tree/master/smartcontract | Python Template]] + +==Operator Implementation== +====Example implementations are available at==== +Operator listen request of oracle contact, fetch the data via http get/post method, and serialize the data via ontology neovm standard, then send signed result to oracle contract. + +OEP-34 Golang Operator Template: [[https://github.com/ontio/ontology-oracle | Operator Template]] + diff --git a/resource/OEP-34/oracle-platform.png b/resource/OEP-34/oracle-platform.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf70b185ecead8476a2683e5bdf984b73779ab1 GIT binary patch literal 36952 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

~|aJIW9-3I9FORvraKT7dPI+phTuVtx?L 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 literal 0 HcmV?d00001 diff --git a/resource/OEP-34/simple-oracle.png b/resource/OEP-34/simple-oracle.png new file mode 100644 index 0000000000000000000000000000000000000000..29779fd880073469dbebda094ff7ade195132fb3 GIT binary patch literal 47255 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 SA1?xa-B8lJUaVmG_}>7{)Nb1V literal 0 HcmV?d00001 From afd9560d0c7bac125bb05f727929c0982ab1ab33 Mon Sep 17 00:00:00 2001 From: siovanus Date: Wed, 26 Dec 2018 10:30:13 +0800 Subject: [PATCH 2/3] Update OEP-34.mediawiki --- OEPS/OEP-34.mediawiki | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OEPS/OEP-34.mediawiki b/OEPS/OEP-34.mediawiki index 4181e8a..4d06426 100644 --- a/OEPS/OEP-34.mediawiki +++ b/OEPS/OEP-34.mediawiki @@ -37,9 +37,9 @@ Oracle contract platform is designed for someone who want to run a platform that ===Method=== ====CreateOracleRequest==== -

+
 public static bool CreateOracleRequest(string request, byte[] address)
-
+ Create oracle request, accepts two params. request string of request body, defines how to get the data and how to serilize the data. @@ -47,9 +47,9 @@ Create oracle request, accepts two params. address the caller's address, will verify it's signature and pay oracle fee. ====SetOracleOutcome==== -
+
 public static bool SetOracleOutcome(byte[] txHash, byte[] result)
-
+ Set result of the oracle request, must be invoked by oracle contract admin, accepts two params. txHash the txHash of oracle request @@ -57,17 +57,17 @@ Set result of the oracle request, must be invoked by oracle contract admin, acce result result of the oracle request ====GetOracleOutcome==== -
+
 public static byte[] GetOracleOutcome(byte[] txHash)
-
+ Returns result according to the txHash of the oracle request, accepts one param. txHash the txHash of oracle request ====RegisterOperator==== -
+
 public static bool RegisterOperator(string method, byte[] pubKey, byte[] address)
-
+ Register an operator to oracle contact, accepts three params. Only available in oracle contract platform. method the method that the operator provide, users can use this method in request to get data via this operator From 2eb9ae66b5d3700c37a648614cf3112306e53389 Mon Sep 17 00:00:00 2001 From: siovanus Date: Sat, 29 Dec 2018 16:48:42 +0800 Subject: [PATCH 3/3] Add notify standard Add notify standard --- OEPS/OEP-34.mediawiki | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/OEPS/OEP-34.mediawiki b/OEPS/OEP-34.mediawiki index 4d06426..8e563ca 100644 --- a/OEPS/OEP-34.mediawiki +++ b/OEPS/OEP-34.mediawiki @@ -76,6 +76,19 @@ Register an operator to oracle contact, accepts three params. Only available in address the address of operator wallet +===Notify=== +====CreateOracleRequest==== + +Notify(["createOracleRequest", request, address]) + +MUST be invoked in CreateOracleRequest function. + +====SetOracleOutcome==== + +Notify(["setOracleOutcome", txHash, status, errMessage]) + +MUST be invoked in SetOracleOutcome function. + ==Oracle Request Format== Oracle request must satisfy OEP-34 format so that operator can recognize, for example: