Skip to content
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

Integrate NeoFS into oracle module #518

Merged
merged 44 commits into from
Mar 9, 2021
Merged

Conversation

doubiliu
Copy link
Contributor

@doubiliu doubiliu commented Feb 8, 2021

No description provided.

@superboyiii superboyiii mentioned this pull request Feb 11, 2021
27 tasks
@cloud8little
Copy link
Contributor

need to sync with latest neo.

@doubiliu doubiliu marked this pull request as ready for review February 25, 2021 05:40
@erikzhang
Copy link
Member

Conflicts

@shargon
Copy link
Member

shargon commented Mar 1, 2021

Tested?

return obj.Payload.ToByteArray();
}

private static Task<byte[]> GetRangeAsync(Client client, Address addr, string[] ps, CancellationToken cancellation)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
private static Task<byte[]> GetRangeAsync(Client client, Address addr, string[] ps, CancellationToken cancellation)
private static async Task<byte[]> GetRangeAsync(Client client, Address addr, string[] ps, CancellationToken cancellation)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need it be async here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the difference?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regardless of whether it is an async method, our purpose is to return a Task. Now since it can return a Task directly, it is not necessary as an async method. Because async methods have additional overhead (although very low).

@ProDog
Copy link
Contributor

ProDog commented Mar 5, 2021

Tested OK.

case:

neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B
neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/range/0|20
neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/hash
neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/header

result:

neo> invoke 0xdb0188e956842faf2d1e3480e3964bd3caaa8d3e request [{"type":"String","value":"neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B"}]
Invoking script with: 'DF9uZW9mczpHMlF3RkVtVXhSM1gyZmM4ZHlHUm1Xc2M4NkVSc2pjV3pzV1YyeTdKZjNDVi9DNTVjREFCdlFjaWFNdWtuaTYzeUJrRFVxR2pTZldxejFod2hyQ0hLV3g5QhHAHwwHcmVxdWVzdAwUPo2qytNLluOANB4try+EVumIAdtBYn1bUg=='
VM State: HALT
Gas Consumed: 10.5210936
Result Stack: [{"type":"Any"}]
Relay tx(no|yes): yes
Signed and relayed transaction with hash=0x174567851d1a2d3b186129885c76e31d89259e5528c4d166e4925f0899301486
neo> [19:21:27.551] Process oracle request: Neo.SmartContract.Native.OracleRequest, txid: 0x174567851d1a2d3b186129885c76e31d89259e5528c4d166e4925f0899301486, url: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B
[19:21:27.557] Request: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B
[19:21:27.850] NeoFS result: 68656c6c6f20646f7562692c20646f756269206973206c69756d656e6779752c2021402324255e262a28295f2b223f3e3a4c617a793a3c607e7a78667771726d5b7063707177656d2c61632f61657161786c696a6c71776461733f283f3f3f2a296f3f3f3f3f3f3f3f71283f3f3f71296f282a5e3f5e2a296f60282a3e3f3c2a293f283f3f3f3f294f283f5f3f294f283f3f3f3f293f3f3f3f4f3f28546f54292f7e7e7e282a3f333f293f286f2d3f3f29292e6f4f203f283f3f20333f293f283f3f20333f293f
[19:21:27.865] Builded response tx:0x60d3ad619208fa261e024b6840eb9c72608829f31fb98ae14bca8b21f9c59d23 requestTx:0x174567851d1a2d3b186129885c76e31d89259e5528c4d166e4925f0899301486 requestId: 107

invoke 0xdb0188e956842faf2d1e3480e3964bd3caaa8d3e request [{"type":"String","value":"neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/range/0|20"}]
Invoking script with: 'DGpuZW9mczpHMlF3RkVtVXhSM1gyZmM4ZHlHUm1Xc2M4NkVSc2pjV3pzV1YyeTdKZjNDVi9DNTVjREFCdlFjaWFNdWtuaTYzeUJrRFVxR2pTZldxejFod2hyQ0hLV3g5Qi9yYW5nZS8wfDIwEcAfDAdyZXF1ZXN0DBQ+jarK00uW44A0Hi2vL4RW6YgB20FifVtS'
VM State: HALT
Gas Consumed: 10.5210936
Result Stack: [{"type":"Any"}]
Relay tx(no|yes): yes
Signed and relayed transaction with hash=0x2e04cfe7269eb4ac03695341d833a1d419e9f2ac3fa079a52d7622d97aeec17c
neo> [19:22:19.555] Process oracle request: Neo.SmartContract.Native.OracleRequest, txid: 0x2e04cfe7269eb4ac03695341d833a1d419e9f2ac3fa079a52d7622d97aeec17c, url: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/range/0|20
[19:22:19.568] Request: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/range/0%7C20
[19:22:19.923] NeoFS result: 68656c6c6f20646f7562692c20646f7562692069
[19:22:19.930] Builded response tx:0x2eff9c7502d5b5168b4f68259313d543c333f8dbdfd7f5a127fce78f7e2cde7e requestTx:0x2e04cfe7269eb4ac03695341d833a1d419e9f2ac3fa079a52d7622d97aeec17c requestId: 109

neo> invoke 0xdb0188e956842faf2d1e3480e3964bd3caaa8d3e request [{"type":"String","value":"neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/hash"}]
Invoking script with: 'DGRuZW9mczpHMlF3RkVtVXhSM1gyZmM4ZHlHUm1Xc2M4NkVSc2pjV3pzV1YyeTdKZjNDVi9DNTVjREFCdlFjaWFNdWtuaTYzeUJrRFVxR2pTZldxejFod2hyQ0hLV3g5Qi9oYXNoEcAfDAdyZXF1ZXN0DBQ+jarK00uW44A0Hi2vL4RW6YgB20FifVtS'
VM State: HALT
Gas Consumed: 10.5210936
Result Stack: [{"type":"Any"}]
Relay tx(no|yes): yes
Signed and relayed transaction with hash=0x39b1db556fea18d0274e494427f6b24eeb806d38cbe3e0f5e8658383658cbbce
neo> [19:22:57.947] Process oracle request: Neo.SmartContract.Native.OracleRequest, txid: 0x39b1db556fea18d0274e494427f6b24eeb806d38cbe3e0f5e8658383658cbbce, url: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/hash
[19:22:57.954] Request: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/hash
[19:22:58.316] NeoFS result: e89169723e4f07d972a5c595c3167d8d98436c994f4f76fc4f03979d4eb7ec56

neo> invoke 0xdb0188e956842faf2d1e3480e3964bd3caaa8d3e request [{"type":"String","value":"neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/header"}]
Invoking script with: 'DGZuZW9mczpHMlF3RkVtVXhSM1gyZmM4ZHlHUm1Xc2M4NkVSc2pjV3pzV1YyeTdKZjNDVi9DNTVjREFCdlFjaWFNdWtuaTYzeUJrRFVxR2pTZldxejFod2hyQ0hLV3g5Qi9oZWFkZXIRwB8MB3JlcXVlc3QMFD6NqsrTS5bjgDQeLa8vhFbpiAHbQWJ9W1I='
VM State: HALT
Gas Consumed: 10.5210936
Result Stack: [{"type":"Any"}]
Relay tx(no|yes): yes
Signed and relayed transaction with hash=0x2067edbd7ce1fe816b9ba14a88bcba15f0dae602533138238c6e04b6b5a1d03c
neo> [19:22:47.534] Process oracle request: Neo.SmartContract.Native.OracleRequest, txid: 0x2067edbd7ce1fe816b9ba14a88bcba15f0dae602533138238c6e04b6b5a1d03c, url: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/header
[19:22:47.544] Request: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/header
[19:22:47.887] NeoFS result: 0a220a20a47c16b1a981bbed80764ae331eef24dff940d89760d16854bb2272550cf4b7e12660a2103a394735ce9f5d2f60d1c7df9574d018e1b0c6a0561d7195a93343a83b03be8811241041d28b4b43112141ec2e15be4c846bdf7c4e0d387dc40450a77119408857e660af82d76cd79dade66e9585262dd5f1b083d5c9ee59ff5de530f992ec09c950e911aa4030a040802100112220a20df3bf2ca214bf908a7426828b2392f41e7440f7b12dfa6cda97b1ace5b9195221a1b0a1935572091cc325c657b4b19e0c7104bae06227ab9129a4ee26320960928c701322408021220e89169723e4f07d972a5c595c3167d8d98436c994f4f76fc4f03979d4eb7ec56424408011240514ecb2700e39468b6eae474b21a154a3e57b5cc4231d4d48add382f62f27dff328246a63894015ccb2ecae43f38fdf54b2c3be21a092b24cfb6b6b3922b27884ae8010a7e0a10068ffe746ae7494dbdce3f0cc17298b4121b0a1935572091cc325c657b4b19e0c7104bae06227ab9129a4ee2631a00222103a394735ce9f5d2f60d1c7df9574d018e1b0c6a0561d7195a93343a83b03be8812a28080112240a220a20df3bf2ca214bf908a7426828b2392f41e7440f7b12dfa6cda97b1ace5b91952212660a21031a6c6fbbdf02ca351745fa86b9ba5a9452d785ac4f7fc2b7548ca2a46c4fcf4a124104ff992ee92fe08f55d5784e6cad2b02cd80e68e8719cd1c8f14a5a815ea927eb079e259df78110a123bf8c0c0c7c4033bd33008a40996f6d0de843a6b905b9635
[19:22:47.895] Builded response tx:0x928e88128bf9413735589d0662a2c7a90b081a13b5ee6d7bf7f44eb19b591cc9 requestTx:0x2067edbd7ce1fe816b9ba14a88bcba15f0dae602533138238c6e04b6b5a1d03c requestId: 110

@ProDog
Copy link
Contributor

ProDog commented Mar 5, 2021

Header:

neo> invoke 0xdb0188e956842faf2d1e3480e3964bd3caaa8d3e request [{"type":"String","value":"neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/header"}]
Invoking script with: 'DGZuZW9mczpHMlF3RkVtVXhSM1gyZmM4ZHlHUm1Xc2M4NkVSc2pjV3pzV1YyeTdKZjNDVi9DNTVjREFCdlFjaWFNdWtuaTYzeUJrRFVxR2pTZldxejFod2hyQ0hLV3g5Qi9oZWFkZXIRwB8MB3JlcXVlc3QMFD6NqsrTS5bjgDQeLa8vhFbpiAHbQWJ9W1I='
VM State: HALT
Gas Consumed: 10.5210936
Result Stack: [{"type":"Any"}]
Relay tx(no|yes): yes
Signed and relayed transaction with hash=0x1b2af792615abcce402d309fb58554600e3443f416ba51f6ff00c7173ff86a24
neo> [20:28:01.616] Process oracle request: Neo.SmartContract.Native.OracleRequest, txid: 0x1b2af792615abcce402d309fb58554600e3443f416ba51f6ff00c7173ff86a24, url: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/header
[20:28:01.624] Request: neofs:G2QwFEmUxR3X2fc8dyGRmWsc86ERsjcWzsWV2y7Jf3CV/C55cDABvQciaMukni63yBkDUqGjSfWqz1hwhrCHKWx9B/header
[20:28:01.910] NeoFS result: 7b20226f626a6563744944223a207b202276616c7565223a20227048775773616d42752b3241646b726a4d65377954662b5544596c32445261465337496e4a5644505333343d22207d2c20227369676e6174757265223a207b20226b6579223a202241364f5563317a7039644c32445278392b56644e4159346244476f465964635a57704d304f6f4f774f2b6942222c20227369676e6174757265223a20224242306f744c51784568516577754662354d684776666645344e4f4833454246436e63526c416946666d594b2b4331327a586e61336d627057464a6933563862434431636e7557663964355444356b75774a79564470453d22207d2c2022686561646572223a207b202276657273696f6e223a207b20226d616a6f72223a20322c20226d696e6f72223a2031207d2c2022636f6e7461696e65724944223a207b202276616c7565223a2022337a76797969464c2b51696e516d676f736a6b7651656445443373533336624e715873617a6c75526c53493d22207d2c20226f776e65724944223a207b202276616c7565223a20224e5663676b6377795847563753786e677878424c7267596965726b536d6b376959773d3d22207d2c20226372656174696f6e45706f6368223a202231313734222c20227061796c6f61644c656e677468223a2022313939222c20227061796c6f616448617368223a207b202274797065223a2022534841323536222c202273756d223a2022364a4670636a355042396c797063575677785a396a5a6844624a6c505433623854774f586e5536333746593d22207d2c2022686f6d6f6d6f727068696348617368223a207b202274797065223a2022545a222c202273756d223a20225555374c4a77446a6c4769323675523073686f56536a3558746378434d645455697430344c324c7966663879676b616d4f4a5142584d73757975512f4f5033315379773734686f4a4b7954507472617a6b69736e69413d3d22207d2c202273657373696f6e546f6b656e223a207b2022626f6479223a207b20226964223a2022426f2f2b6447726e535532397a6a384d77584b5974413d3d222c20226f776e65724944223a207b202276616c7565223a20224e5663676b6377795847563753786e677878424c7267596965726b536d6b376959773d3d22207d2c20226c69666574696d65223a207b207d2c202273657373696f6e4b6579223a202241364f5563317a7039644c32445278392b56644e4159346244476f465964635a57704d304f6f4f774f2b6942222c20226f626a656374223a207b202276657262223a2022505554222c202261646472657373223a207b2022636f6e7461696e65724944223a207b202276616c7565223a2022337a76797969464c2b51696e516d676f736a6b7651656445443373533336624e715873617a6c75526c53493d22207d207d207d207d2c20227369676e6174757265223a207b20226b6579223a2022417870736237766641736f314630583668726d36577052533134577354332f437431534d6f7152735438394b222c20227369676e6174757265223a202242502b5a4c756b76344939563158684f624b307241733241356f3648476330636a78536c714258716b6e367765654a5a33336752436849372b4d4441783851444f394d77434b514a6c766251336f5136613542626c6a553d22207d207d207d207d
[20:28:01.926] Builded response tx:0x4ed9bb9476cdd20f6275fc006e227da549aa5bd78a9fa5eebc013e63130bb207 requestTx:0x1b2af792615abcce402d309fb58554600e3443f416ba51f6ff00c7173ff86a24 requestId: 113
[20:28:01.934] Send response tx: responseTx=0x4ed9bb9476cdd20f6275fc006e227da549aa5bd78a9fa5eebc013e63130bb207
[20:28:01.944] Send oracle sign data: Oracle node: 02d558b07608935302aa7efb796d5651682ebdf7fbd11985a5a4f8861c64f29ae0 RequestTx: 0x1b2af792615abcce402d309fb58554600e3443f416ba51f6ff00c7173ff86a24 Sign: bc29624a805c1a364b98f5815c79876c566654840556f985560f99182fa47dbab6a5de02c4ae41a4e4823e65eeae4de3c8e7c4bab98d1c25ed26ce720480e924

NeoFS result hex to string:

{
    "objectID":{
        "value":"pHwWsamBu+2AdkrjMe7yTf+UDYl2DRaFS7InJVDPS34="
    },
    "signature":{
        "key":"A6OUc1zp9dL2DRx9+VdNAY4bDGoFYdcZWpM0OoOwO+iB",
        "signature":"BB0otLQxEhQewuFb5MhGvffE4NOH3EBFCncRlAiFfmYK+C12zXna3mbpWFJi3V8bCD1cnuWf9d5TD5kuwJyVDpE="
    },
    "header":{
        "version":{
            "major":2,
            "minor":1
        },
        "containerID":{
            "value":"3zvyyiFL+QinQmgosjkvQedED3sS36bNqXsazluRlSI="
        },
        "ownerID":{
            "value":"NVcgkcwyXGV7SxngxxBLrgYierkSmk7iYw=="
        },
        "creationEpoch":"1174",
        "payloadLength":"199",
        "payloadHash":{
            "type":"SHA256",
            "sum":"6JFpcj5PB9lypcWVwxZ9jZhDbJlPT3b8TwOXnU637FY="
        },
        "homomorphicHash":{
            "type":"TZ",
            "sum":"UU7LJwDjlGi26uR0shoVSj5XtcxCMdTUit04L2Lyff8ygkamOJQBXMsuyuQ/OP31Syw74hoJKyTPtrazkisniA=="
        },
        "sessionToken":{
            "body":{
                "id":"Bo/+dGrnSU29zj8MwXKYtA==",
                "ownerID":{
                    "value":"NVcgkcwyXGV7SxngxxBLrgYierkSmk7iYw=="
                },
                "lifetime":{

                },
                "sessionKey":"A6OUc1zp9dL2DRx9+VdNAY4bDGoFYdcZWpM0OoOwO+iB",
                "object":{
                    "verb":"PUT",
                    "address":{
                        "containerID":{
                            "value":"3zvyyiFL+QinQmgosjkvQedED3sS36bNqXsazluRlSI="
                        }
                    }
                }
            },
            "signature":{
                "key":"Axpsb7vfAso1F0X6hrm6WpRS14WsT3/Ct1SMoqRsT89K",
                "signature":"BP+ZLukv4I9V1XhObK0rAs2A5o6HGc0cjxSlqBXqkn6weeJZ33gRChI7+MDAx8QDO9MwCKQJlvbQ3oQ6a5BbljU="
            }
        }
    }
}

@ZhangTao1596
Copy link
Collaborator

@shargon @erikzhang Merge?

@superboyiii superboyiii merged commit 68da90f into neo-project:master Mar 9, 2021
roman-khimov added a commit to nspcc-dev/neo-go that referenced this pull request Apr 6, 2021
joeqian10 pushed a commit to joeqian10/neo-modules that referenced this pull request Apr 7, 2021
* Integrate NeoFS into oracle module

* Rename

* Fix bug

* Fix bug

* Fix UT

* Clean using

* Optimize

* Reorder using

* change to base64

* change to random

* Fix bug

* Rename

* change to single node

* Remove AttachWallet

* Rename

* Remove empty line

* Update OracleNeoFSProtocol.cs

* Fix bug

* fix bug

* neofs request timeout

* url check

* Update OracleNeoFSProtocol.cs

* Update config.json

* apply timeout

* Fix memory leak

* async

* update neofs api

* remove neofs request host check

* Fix bug of URL encode

* Fix format

* add default salt, format

* Return JSON string of ObjectHeader

* Optimize

Co-authored-by: Shargon <shargon@gmail.com>
Co-authored-by: Erik Zhang <erik@neo.org>
Co-authored-by: ZhangTao1596 <zhangtao@ngd.neo.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants