Conversation
| return input; | ||
|
|
||
| JObject beforeObject = JObject.Parse(input); | ||
| JArray afterObjects = new JArray(beforeObject.SelectTokens(filterArgs).ToArray()); // TODO |
There was a problem hiding this comment.
Filter will be a json filter (XPATH), or a contract execution?
-> Contract execution it's harder because the execution fee but it's transparent to the nodes, if we use a XPATH filters we will have a lot of underterminism betwen different implementations or libraries.
There was a problem hiding this comment.
According to neo-project/neo#1259 it seems that was decided JSONPath but for me it has two important dissadvantages.
- Cost of gas, we will not have control over how much time was spent in this filter.
- Same implementation throughout the different systems.
But it's ok for me, I am not against to use JsonPath.
src/Oracle/Oracle.cs
Outdated
| private CancellationTokenSource cancelSource; | ||
|
|
||
| private static readonly IOracleProtocol Https = new OracleHttpProtocol(); | ||
| private static readonly TimeSpan MaxTaskTimeout = TimeSpan.FromMinutes(5); |
There was a problem hiding this comment.
It should be configurable or stored in the policy
There was a problem hiding this comment.
Should this be related to the fees?
src/Oracle/Oracle.cs
Outdated
| { | ||
| try | ||
| { | ||
| var url = new Uri("http://" + node + "/"); |
There was a problem hiding this comment.
Maybe we should force oracles to have https with his publicKey
src/Oracle/Oracle.cs
Outdated
| ECPoint[] nodes = NativeContract.Oracle.GetOracleNodes(snapshot); | ||
| if (task.Signs.Count >= nodes.Length / 3 && task.Tx != null) | ||
| { | ||
| var contract = Contract.CreateMultiSigContract(nodes.Length - (nodes.Length - 1) / 3, nodes); |
There was a problem hiding this comment.
|
We should add in rpc allowed nodes, or allowed client certificates, in order to allow or not only the oracle nodes, because otherwise anyone can fill the rpc queue and deny the service. |
I think it has been done in: |
|
I'll fix them tomorrow. |
…into async-oracle
Fixed. It's because the script of native contract has been adjusted. See https://github.com/neo-project/neo/blob/8b1509f3a2fb7fa62a958a997fef18b7a30cfe1a/src/neo/SmartContract/Native/NativeContract.cs#L41-L49 |
|
Test passed with following scenarios:
@shargon @Tommo-L @erikzhang please help review the cases, in case I miss something. |
|
These cases are fine. Thanks. |
|
Conflicts |
Done. |
|
Let me do a smoke test. |
| Assert.AreEqual(@"[""Acme Co""]", Utility.StrictUTF8.GetString(OracleService.Filter(json, "Manufacturers[0].Name"))); | ||
| Assert.AreEqual("[50]", Utility.StrictUTF8.GetString(OracleService.Filter(json, "Manufacturers[0].Products[0].Price"))); | ||
| Assert.AreEqual(@"[""Elbow Grease""]", Utility.StrictUTF8.GetString(OracleService.Filter(json, "Manufacturers[1].Products[0].Name"))); | ||
| Assert.AreEqual(@"[{""Name"":""Elbow Grease"",""Price"":99.95}]", Utility.StrictUTF8.GetString(OracleService.Filter(json, "Manufacturers[1].Products[0]"))); |
There was a problem hiding this comment.
should add Filter(json,"") and Filter(json,null)
There was a problem hiding this comment.
neo-modules/src/OracleService/OracleService.cs
Lines 427 to 428 in 0acf93b
It returns the unmodified input.
|
Smoke test passed. |
|
Merge? |
* init * move * Clean code * Update src/Oracle/Oracle.cs * fix * Update src/Oracle/Oracle.cs * fix oracle * format * fix * optimize * optimize * format * fix * add CheckOracleAccount * fix * Update src/Oracle/Protocol/OracleHttpProtocol.cs * Update src/Oracle/Oracle.cs * fix * format * fix * Update Oracle.cs * fix timeout * fix timeout2 * optimze * format * Apply OracleHttpProtocol.cs * optimize * fix * remove * fix * optimize * Apply recommmendations * fix * add backupTx * sort public key * avoid two txs * send backup sign after timeout * exchange arguments of AddResponseTxSign * format * format * add cache * fix * optimize password * up error code * format * fix and add lock * fix * optimize * up oracle response code * use base64 * fix * remove useless library * fix * optimize * optimize * rename to OracleService * avoid duplicate request * Replace HashsetCache by ConcurrentDictionary * fix * fix * fix * clean code * rename Designate to Designation * Update src/Oracle/OracleService.cs Co-authored-by: Shargon <shargon@gmail.com> * fix * Update projects * Rename * optimize code * static AllowPrivateHost/Timeout * Update src/OracleService/Protocols/OracleHttpProtocol.cs Co-authored-by: Erik Zhang <erik@neo.org> * apply erik's suggestion * fix * fix * fix 2/2 * Update OracleService.cs * CI01118 * add Process * Optimize * Remove unused parameter * readonly * Use System.Threading.Timer * Rename * Update OracleService.cs * Update OracleService.cs * Rename * Add Settings.cs * Move IsInternal to Helper.cs * Update OracleService.cs * Remove Utility alias * Use a single HttpClient * Use HttpCompletionOption.ResponseContentRead * private class * Simplify OracleService.cs * Use Interlocked * fix * Using lock in OnTimer method * Replace lock by concurrentdictionary * Optimize * Simplify * async * Prevent reentry * Optimize * private * Prevent multiple starts * fix * fix * Optimize CheckOracleAccount * Fix OnStop * Reorder methods * Optimize CreateResponseTx * fix * Remove WithTimeout * Add check * add oracle ut * Delete Neo.Plugins.OracleService.Tests.csproj * Delete OracleServiceTest.cs * add try-catch when call Filter * fix and add UT * Remove empty line * Fix OnPersist * Optimize iteration * more optimize * fix ut * fix * Optimize * use random * Json un-indented * Replace nonce for deterministic value * Replace nonce * Add UT for filters Co-authored-by: Shargon <shargon@gmail.com> Co-authored-by: Owen Zhang <38493437+superboyiii@users.noreply.github.com> Co-authored-by: Erik Zhang <erik@neo.org>



No description provided.