diff --git a/duniterpy/documents/transaction.py b/duniterpy/documents/transaction.py
index fa950e808bda006e9307855e1d3f70014352d9d5..7917c25540e7e57de96cc35a77a39d93aacaa4a9 100644
--- a/duniterpy/documents/transaction.py
+++ b/duniterpy/documents/transaction.py
@@ -1,5 +1,5 @@
 import re
-from typing import TypeVar, List, Type, Optional, Dict, Union
+from typing import TypeVar, List, Any, Type, Optional, Dict, Union
 
 import pypeg2
 
@@ -78,6 +78,24 @@ class InputSource:
         self.origin_id = origin_id
         self.index = index
 
+
+    def __eq__(self, other: Any) -> bool:
+        """
+        Check InputSource instances equality
+        """
+        if not isinstance(other, InputSource):
+            return NotImplemented
+        return self.amount == other.amount and\
+        self.base == other.base and\
+        self.source == other.source and\
+        self.origin_id == other.origin_id and\
+        self.index == other.index
+
+
+    def __hash__(self) -> int:
+        return hash((self.amount, self.base, self.source, self.origin_id, self.index))
+
+
     @classmethod
     def from_inline(cls: Type[InputSourceType], tx_version: int, inline: str) -> InputSourceType:
         """