| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| |
| #%% |
| from service.sdk_validator.resdb_validator.models import Transaction |
| from service.sdk_validator.resdb_validator.exceptions import InvalidSignature |
| |
| |
| def is_valid_tx(tx_dict: dict) -> Transaction: |
| tx_obj: Transaction = Transaction.from_dict(tx_dict) |
| |
| try: |
| tx_obj.validate() |
| return (0, tx_obj.tx_dict) |
| |
| except InvalidSignature: |
| return (1, None) |
| |
| |
| # %% |
| |
| if __name__ == "__main__": |
| tx_dict = { |
| "inputs": [ |
| { |
| "owners_before": ["9zC37hhowLSeHjknaqsZRAfakvuTR1piuin42AAvL7sG"], |
| "fulfills": None, |
| "fulfillment": "pGSAIIWEFJxPvs4ClXvcd4Rnwy2h7GVmb3JME7xH5n2oBE3jgUDLke3SK_3x333Dg3Gd-1co64LWgMenHLAam3Bo48-VCjboQO0GZQJdA_5DbvgxVmoKJYc3mK7o9jiHMnb5WscL", |
| } |
| ], |
| "outputs": [ |
| { |
| "public_keys": ["EuLjsaa21zXzf3kQ25AbwNrymdk9iMuKtrBgqkGM2uVB"], |
| "condition": { |
| "details": { |
| "type": "ed25519-sha-256", |
| "public_key": "EuLjsaa21zXzf3kQ25AbwNrymdk9iMuKtrBgqkGM2uVB", |
| }, |
| "uri": "ni:///sha-256;s9hZhqQ61Vt2jcfJSqHnPhGwtuS6zlJHRypyEoyrZfY?fpt=ed25519-sha-256&cost=131072", |
| }, |
| "amount": "1", |
| } |
| ], |
| "operation": "CREATE", |
| "metadata": None, |
| "asset": { |
| "data": { |
| "token_for": {"game_boy": {"serial_number": "LR35902"}}, |
| "description": "Time share token. Each token equals one hour of usage.", |
| } |
| }, |
| "version": "2.0", |
| "id": "523db618299340e10b5c779600563285cf174aeb1362603bca66d67371584cb8", |
| } |
| |
| ret = is_valid_tx(tx_dict) |
| # %% |