From aaae81426b3c19c21c4c0450e2df56d337d01def Mon Sep 17 00:00:00 2001
From: Dariusz Kedzierski <dkedzierski@syncad.com>
Date: Wed, 29 Apr 2020 16:52:03 +0200
Subject: [PATCH] Fixed bug with expiration exception for transactions pushed
 in accelerated node

---
 beem/transactionbuilder.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/beem/transactionbuilder.py b/beem/transactionbuilder.py
index 162899a4..1356533b 100644
--- a/beem/transactionbuilder.py
+++ b/beem/transactionbuilder.py
@@ -251,9 +251,17 @@ class TransactionBuilder(dict):
             ops.extend([Operation(op, appbase=appbase, prefix=self.hive.prefix)])
 
         # We no wrap everything into an actual transaction
-        expiration = formatTimeFromNow(
-            self.expiration or self.hive.expiration
-        )
+        # calculation expiration time from last block time not system time
+        # it fixes transaction expiration error when pushing transactions 
+        # when blocks are moved forward with debug_produce_block*
+        import dateutil.parser
+        from datetime import timedelta
+        now = dateutil.parser.parse(self.hive.rpc.get_dynamic_global_properties().get('time'))
+        expiration = now + timedelta(seconds = int(self.expiration or self.hive.expiration))
+        expiration = expiration.replace(microsecond = 0).isoformat()
+        #expiration = formatTimeFromNow(
+        #    self.expiration or self.hive.expiration
+        #)
         if ref_block_num is None or ref_block_prefix is None:
             ref_block_num, ref_block_prefix = transactions.getBlockParams(
                 self.hive.rpc)
-- 
GitLab