From 90fca9c4e1fad6fb4752a821d37d8fc0d6addb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Eckel?= Date: Tue, 19 Apr 2022 23:32:56 +0200 Subject: [PATCH] fixed output public_keys order bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jürgen Eckel --- planetmint/backend/tarantool/init.lua | 2 +- planetmint/backend/tarantool/transaction/tools.py | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/planetmint/backend/tarantool/init.lua b/planetmint/backend/tarantool/init.lua index 04a7618..d655e8b 100644 --- a/planetmint/backend/tarantool/init.lua +++ b/planetmint/backend/tarantool/init.lua @@ -57,7 +57,7 @@ outputs:create_index('unique_search' ,{type='hash', parts={'output_id'}}) outputs:create_index('id_search' ,{type='tree', unique=false, parts={'transaction_id'}}) keys = box.schema.space.create('keys') -keys:format({{name = 'id', type='string'}, {name = 'transaction_id', type = 'string'} ,{name = 'output_id', type = 'string'}, {name = 'public_key', type = 'string'}}) +keys:format({{name = 'id', type='string'}, {name = 'transaction_id', type = 'string'} ,{name = 'output_id', type = 'string'}, {name = 'public_key', type = 'string'}, {name = 'key_index', type = 'integer'}}) keys:create_index('id_search', {type = 'hash', parts={'id'}}) keys:create_index('keys_search', {type = 'tree', unique=false, parts={'public_key'}}) keys:create_index('txid_search', {type = 'tree', unique=false, parts={'transaction_id'}}) diff --git a/planetmint/backend/tarantool/transaction/tools.py b/planetmint/backend/tarantool/transaction/tools.py index c0848b1..a702aaf 100644 --- a/planetmint/backend/tarantool/transaction/tools.py +++ b/planetmint/backend/tarantool/transaction/tools.py @@ -106,9 +106,11 @@ class TransactionDecompose: print(f"\noutput: {tmp_output}") _outputs.append(tmp_output) output_index = output_index + 1 + key_index = 0 for _key in _output["public_keys"]: key_id = self.__create_hash(7) - _keys.append((key_id, self._transaction["id"], output_id, _key)) + _keys.append((key_id, self._transaction["id"], output_id, _key, key_index)) + key_index = key_index + 1 return _keys, _outputs def __prepare_transaction(self): @@ -171,7 +173,10 @@ class TransactionCompose: print (f"\noutput : {_output}") _out = self._map["outputs"].copy() _out["amount"] = _output[1] - _out["public_keys"] = [_key[3] for _key in self.db_results["keys"] if _key[2] == _output[5]] + _tmp_keys = [(_key[3], _key[4]) for _key in self.db_results["keys"] if _key[2] == _output[5]] + _sorted_keys = sorted(_tmp_keys, key=lambda tup: (tup[1]) ) + _out["public_keys"] = [_key[0] for _key in _sorted_keys] + _out["condition"]["uri"] = _output[2] if self.db_results["outputs"][0][7] is None: _out["condition"]["details"]["type"] = _output[3]