-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Oracle: Set the right Tx version #1542
Conversation
shargon
commented
Apr 6, 2020
•
edited
Loading
edited
- Assign the right version when we create a new TX
- The type of error in the response was also eliminated, we should log it, but not hash or retransmit it to reduce indeterminism
@@ -40,6 +40,7 @@ public class Transaction : IEquatable<Transaction>, IInventory, IInteroperable | |||
private Cosigner[] cosigners; | |||
private byte[] script; | |||
private Witness[] witnesses; | |||
private UInt256 oracleRequestTx; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We create a new field! Why not use attribute?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's interesting to me to compare this implementation to attribute-based one, for some reason I think that reusing attributes would make things easier and require less changes. And adding this field to each and every transaction is a bit inefficient memory-wise.
@@ -121,6 +128,11 @@ public int Size | |||
Cosigners.GetVarSize() + //Cosigners | |||
Script.GetVarSize() + //Script | |||
Witnesses.GetVarSize(); //Witnesses | |||
|
|||
if (Version == TransactionVersion.OracleResponse) | |||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TransactionType
will be better? It seems we are misusing version and type? @roman-khimov I think this comment makes sense.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True, types are types and versions are versions, both have their own valid meaning and purpose and it's better not to mix them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The original idea was this #1539 (comment)
I think that we could change the way later, there are no agrement between how to check that it's a oracle TX, and where put the
|
* Set the right Tx version * Remove Error types from TX and VM * Neo.Oracle.Get now only return the result or null
* Set the right Tx version * Remove Error types from TX and VM * Neo.Oracle.Get now only return the result or null
* first commit * format * Simplify code * add UT and add some feature * Fix bug * Add summary and fix bug * format * format * little change * little change * little change * change Fee & Fix bug * Optimize * add config class * FiX UT * Format * Fix UT * Fix format and Optimize * Add some UT * Fix bug and add UT * Update src/neo/SmartContract/Native/Oracle/OraclePolicyContract.cs Co-Authored-By: Luchuan <luchuan@ngd.neo.org> * little change * format * Update src/neo/SmartContract/Native/Oracle/OraclePolicyContract.cs Co-Authored-By: Shargon <shargon@gmail.com> * add check * change validator * Add double initialization check * add UT * Add UT * change UT * fill UT * up ut and fix NeoToken.GetValidators * remove console * reset NEO.getValidators * fix GetOracleValidators * Rename variable * Update src/neo/SmartContract/Native/Oracle/OracleContract.cs Co-Authored-By: Erik Zhang <erik@neo.org> * Update src/neo/SmartContract/Native/Oracle/OracleContract.cs Co-Authored-By: Erik Zhang <erik@neo.org> * Fix bug * change logic * Fix name * change to const * Add double initialization check and fix ut * optimize Co-authored-by: Shargon <shargon@gmail.com> Co-authored-by: Luchuan <luchuan@ngd.neo.org> Co-authored-by: Luchuan <luchuan@neo.org> Co-authored-by: Erik Zhang <erik@neo.org> Oracle Syscall (#1399) * Plugins from List to array * Move false to init * Fix UT * Refactor * UT * Change HTTP to HTTPS * UT Syscall * Remove Version * Remove HTTP from the syscall name * Check schema * Rename * Update src/neo/Oracle/OracleRequest.cs Co-Authored-By: Erik Zhang <erik@neo.org> * Fix abstract * Rename * Remove Body * Change order of members * Rename Neo.Oracle.Get Co-authored-by: Vitor Nazário Coelho <vncoelho@gmail.com> Co-authored-by: erikzhang <erik@neo.org> Co-authored-by: Belane <srbelane@gmail.com> Oracle Syscall (#1399) * Plugins from List to array * Move false to init * Fix UT * Refactor * UT * Change HTTP to HTTPS * UT Syscall * Remove Version * Remove HTTP from the syscall name * Check schema * Rename * Update src/neo/Oracle/OracleRequest.cs Co-Authored-By: Erik Zhang <erik@neo.org> * Fix abstract * Rename * Remove Body * Change order of members * Rename Neo.Oracle.Get Co-authored-by: Vitor Nazário Coelho <vncoelho@gmail.com> Co-authored-by: erikzhang <erik@neo.org> Co-authored-by: Belane <srbelane@gmail.com> Rename OracleResult->OracleResponse (#1516) Removed hash from the response Oracle Syscall (#1399) * Plugins from List to array * Move false to init * Fix UT * Refactor * UT * Change HTTP to HTTPS * UT Syscall * Remove Version * Remove HTTP from the syscall name * Check schema * Rename * Update src/neo/Oracle/OracleRequest.cs Co-Authored-By: Erik Zhang <erik@neo.org> * Fix abstract * Rename * Remove Body * Change order of members * Rename Neo.Oracle.Get Co-authored-by: Vitor Nazário Coelho <vncoelho@gmail.com> Co-authored-by: erikzhang <erik@neo.org> Co-authored-by: Belane <srbelane@gmail.com> Rename OracleResult->OracleResponse (#1516) Removed hash from the response Oracle Service (#1517) * Oracle Service * Fix fee * Optimize load configuration * Fix akka message * Optimize * dotnet format * Fix sort * Oracle Service * Fix fee * Optimize load configuration * Fix akka message * Optimize * dotnet format * Fix sort * Apply rename * Small changes * Add UT * Fix Start Stop * dotnet-format * Migrate to HTTPS test * Change AKKA message * Tommo recomendations * Add comunication between OracleTx and UserTx * Advance of signature * Fix UT * dotnet-format * Advance of signature Fix UT dotnet-format * Fix UT * Remove duplica method * Reduce timeout time * Add log for fix UT * Add filters * Change port to 443 * Oracle Service * Fix fee * Optimize load configuration * Fix akka message * Optimize * dotnet format * Fix sort * Oracle Service * Fix fee * Optimize load configuration * Fix akka message * Optimize * dotnet format * Fix sort * Apply rename * Small changes * Add UT * Fix Start Stop * dotnet-format * Migrate to HTTPS test * Change AKKA message * Tommo recomendations * Add comunication between OracleTx and UserTx * Advance of signature * Fix UT * dotnet-format * Fix UT * Remove duplica method * Reduce timeout time * Add log for fix UT * Add filters * Change port to 443 * Merge changes * Change SSL Protocol * Merge remote-tracking branch 'neo-project/oracle-service' into oracle-service * Add UT certificate * Clean code * Add UT fix GetOracleMultiSigAddress (#1538) * fix GetOracleMultiSigAddress * First lowercase Co-authored-by: Shargon <shargon@gmail.com> Oracle: Tx comunication (#1540) * Tx comunication * Some fixes Transaction Version (#1539) Oracle: Allow wallets to add assert for the oracle response (#1541) * Add assert for each oracle request * Change to goto * Improve wallet asserts * Optimize * Fix URL type * dotnet format * Oracle: Tx comunication (#1540) * Tx comunication * Some fixes * Optimize OracleExecutionCache * Add assert for each oracle request * Change to goto * Improve wallet asserts * Optimize * Fix URL type * dotnet format * Optimize OracleExecutionCache * MakeTransaction UT Oracle: Set the right Tx version (#1542) * Set the right Tx version * Remove Error types from TX and VM * Neo.Oracle.Get now only return the result or null Oracle: P2P Response Signature Message (#1553) * Oracle Response Signature P2P * caches * rename private fields * remove comments * remove more comments and fix size * Clean code Co-authored-by: Shargon <shargon@gmail.com> Oracle: OracleService (#1555) * Start pool * Prepare for neo-node * Fix double call * Prepare pool * Fix * Join oracle pool with oracle service * dotnet-format * Try to fix UT * UT pass * Fix UT * Fix p2p message * Unify collections * Relay p2p message * Clean code and fixes * Send tx to OracleService * RequestTx will wait for ResponseTx * Rename * Remove supervisor * Allow to put request, and response in the same block * Check the sender of OracleResponses * Remove OracleResponse message in OracleService * Organize code * Fix typo * Remove task count TODO * Remove Thread-safe TODO * Remove TODO * ResponseItem changes * Read the oracle contract on my response Receive oraclePayload * Clean code * Add Stop message * Save only one response for PublicKey/RequestTx Improve sorting response pool * Improve sort * Group sort methods in the same region * Ask for the request TX if I don't have it * Reorder code * Rename * First oracle TX Oracle: Remove some TODOs (#1574) * Remove some todos * Remove one method * Reuse ManualWitness * dotnet format * Allow both tx in the same block without change order or fee * Fix p2p message serialization * Fix p2p * Fixes and IInventory * Fix akka message * Fix ut Fix conflicts Remove double call