diff --git a/duniterpy/documents/block.py b/duniterpy/documents/block.py
index 1cc81e31b33a341a807bc0d255fc1477b28b5656..ef3f46f35e60432595da607e53b743fec6e1cc13 100644
--- a/duniterpy/documents/block.py
+++ b/duniterpy/documents/block.py
@@ -32,6 +32,8 @@ from .transaction import Transaction
 
 BlockType = TypeVar("BlockType", bound="Block")
 
+VERSION = 12
+
 
 class Block(Document):
     """
@@ -150,7 +152,6 @@ class Block(Document):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         number: int,
         powmin: int,
@@ -177,11 +178,11 @@ class Block(Document):
         inner_hash: str,
         nonce: int,
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Constructor
 
-        :param version: duniter protocol version
         :param currency: the block currency
         :param number: the number of the block
         :param powmin: the powmin value of this block
@@ -208,6 +209,7 @@ class Block(Document):
         :param inner_hash: the block hash
         :param nonce: the nonce value of the block
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=block.VERSION)
         """
         super().__init__(version, currency)
 
@@ -274,7 +276,6 @@ class Block(Document):
         version = b["version"]
         currency = b["currency"]
         arguments = {  # arguments used to create block
-            "version": b["version"],
             "currency": b["currency"],
             "number": b["number"],
             "powmin": b["powMin"],
@@ -300,39 +301,40 @@ class Block(Document):
             "transactions": b["transactions"],
             "inner_hash": b["inner_hash"],
             "nonce": b["nonce"],
+            "version": b["version"],
         }
         # parameters: Optional[Sequence[str]]
         if arguments["parameters"]:
             arguments["parameters"] = arguments["parameters"].split(":")
         # identities: List[Identity]
         arguments["identities"] = [
-            Identity.from_inline(version, currency, i + "\n")
+            Identity.from_inline(currency, i + "\n", version)
             for i in arguments["identities"]
         ]
         # joiners: List[Membership]
         arguments["joiners"] = [
-            Membership.from_inline(version, currency, "IN", i + "\n")
+            Membership.from_inline(currency, "IN", i + "\n", version)
             for i in arguments["joiners"]
         ]
         # actives: List[Membership]
         arguments["actives"] = [
-            Membership.from_inline(version, currency, "IN", i + "\n")
+            Membership.from_inline(currency, "IN", i + "\n", version)
             for i in arguments["actives"]
         ]
         # leavers: List[Membership]
         arguments["leavers"] = [
-            Membership.from_inline(version, currency, "OUT", i + "\n")
+            Membership.from_inline(currency, "OUT", i + "\n", version)
             for i in arguments["leavers"]
         ]
         # revokations: List[Revocation]
         arguments["revokations"] = [
-            Revocation.from_inline(version, currency, i + "\n")
+            Revocation.from_inline(currency, i + "\n", version)
             for i in arguments["revokations"]
         ]
         # certifications: List[Certification]
         arguments["certifications"] = [
             Certification.from_inline(
-                version, currency, arguments["inner_hash"], i + "\n"
+                currency, arguments["inner_hash"], i + "\n", version
             )
             for i in arguments["certifications"]
         ]
@@ -435,35 +437,35 @@ class Block(Document):
         if Block.re_identities.match(lines[n]) is not None:
             n += 1
             while Block.re_joiners.match(lines[n]) is None:
-                selfcert = Identity.from_inline(version, currency, lines[n])
+                selfcert = Identity.from_inline(currency, lines[n], version)
                 identities.append(selfcert)
                 n += 1
 
         if Block.re_joiners.match(lines[n]):
             n += 1
             while Block.re_actives.match(lines[n]) is None:
-                membership = Membership.from_inline(version, currency, "IN", lines[n])
+                membership = Membership.from_inline(currency, "IN", lines[n], version)
                 joiners.append(membership)
                 n += 1
 
         if Block.re_actives.match(lines[n]):
             n += 1
             while Block.re_leavers.match(lines[n]) is None:
-                membership = Membership.from_inline(version, currency, "IN", lines[n])
+                membership = Membership.from_inline(currency, "IN", lines[n], version)
                 actives.append(membership)
                 n += 1
 
         if Block.re_leavers.match(lines[n]):
             n += 1
             while Block.re_revoked.match(lines[n]) is None:
-                membership = Membership.from_inline(version, currency, "OUT", lines[n])
+                membership = Membership.from_inline(currency, "OUT", lines[n], version)
                 leavers.append(membership)
                 n += 1
 
         if Block.re_revoked.match(lines[n]):
             n += 1
             while Block.re_excluded.match(lines[n]) is None:
-                revokation = Revocation.from_inline(version, currency, lines[n])
+                revokation = Revocation.from_inline(currency, lines[n], version)
                 revoked.append(revokation)
                 n += 1
 
@@ -480,7 +482,7 @@ class Block(Document):
             n += 1
             while Block.re_transactions.match(lines[n]) is None:
                 certification = Certification.from_inline(
-                    version, currency, prev_hash, lines[n]
+                    currency, prev_hash, lines[n], version
                 )
                 certifications.append(certification)
                 n += 1
@@ -524,7 +526,6 @@ class Block(Document):
         signature = Block.parse_field("Signature", lines[n])
 
         block = cls(
-            version,
             currency,
             number,
             powmin,
@@ -550,6 +551,7 @@ class Block(Document):
             transactions,
             inner_hash,
             nonce,
+            version=version,
         )
 
         # return block with signature
diff --git a/duniterpy/documents/certification.py b/duniterpy/documents/certification.py
index 10b926c2be4016c6cb4bed50aa7d9c318bab030c..bbb71b76e5965c314da0c370fb72920c74f6a2dc 100644
--- a/duniterpy/documents/certification.py
+++ b/duniterpy/documents/certification.py
@@ -26,6 +26,8 @@ from .identity import Identity
 
 CertificationType = TypeVar("CertificationType", bound="Certification")
 
+VERSION = 10
+
 
 class Certification(Document):
     """
@@ -55,22 +57,22 @@ class Certification(Document):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         pubkey_from: str,
         identity: Union[Identity, str],
         timestamp: BlockUID,
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Constructor
 
-        :param version: the UCP version
         :param currency: the currency of the blockchain
         :param pubkey_from: Pubkey of the certifier
         :param identity: Document instance of the certified identity or identity pubkey string
         :param timestamp: the blockuid
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=certification.VERSION)
         """
         super().__init__(version, currency)
         self.pubkey_from = pubkey_from
@@ -115,7 +117,7 @@ class Certification(Document):
 
         identity = Identity.from_certification_raw(signed_raw)
 
-        certification = cls(version, currency, pubkey_from, identity, timestamp)
+        certification = cls(currency, pubkey_from, identity, timestamp, version=version)
 
         # return certification with signature
         certification.signature = signature
@@ -124,10 +126,10 @@ class Certification(Document):
     @classmethod
     def from_inline(
         cls: Type[CertificationType],
-        version: int,
         currency: str,
         blockhash: Optional[str],
         inline: str,
+        version: int = VERSION,
     ) -> CertificationType:
         """
         Return Certification instance from inline document
@@ -135,10 +137,10 @@ class Certification(Document):
         Only self.pubkey_to is populated.
         You must populate self.identity with an Identity instance to use raw/sign/signed_raw methods
 
-        :param version: Version of document
         :param currency: Name of the currency
         :param blockhash: Hash of the block
         :param inline: Inline document
+        :param version: Document version (default=certification.VERSION)
         :return:
         """
         cert_data = Certification.re_inline.match(inline)
@@ -153,7 +155,9 @@ class Certification(Document):
             timestamp = BlockUID(blockid, blockhash)
 
         signature = cert_data.group(4)
-        certification = cls(version, currency, pubkey_from, pubkey_to, timestamp)
+        certification = cls(
+            currency, pubkey_from, pubkey_to, timestamp, version=version
+        )
 
         # return certification with signature
         certification.signature = signature
diff --git a/duniterpy/documents/identity.py b/duniterpy/documents/identity.py
index ab8222ca1e3cc13f9a663412ae88107064ab3d7d..7d0c460c4954226a29dffa2964269b65fcfb97a4 100644
--- a/duniterpy/documents/identity.py
+++ b/duniterpy/documents/identity.py
@@ -25,6 +25,8 @@ from .document import Document, MalformedDocumentError
 
 IdentityType = TypeVar("IdentityType", bound="Identity")
 
+VERSION = 10
+
 
 class Identity(Document):
     """
@@ -80,22 +82,22 @@ class Identity(Document):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         pubkey: str,
         uid: str,
         timestamp: BlockUID,
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Create an identity document
 
-        :param version: Version of the document
         :param currency: Name of the currency
         :param pubkey:  Public key of the account linked to the identity
         :param uid: Unique identifier
         :param timestamp: BlockUID instance
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=identity.VERSION)
         """
         super().__init__(version, currency)
 
@@ -108,14 +110,14 @@ class Identity(Document):
 
     @classmethod
     def from_inline(
-        cls: Type[IdentityType], version: int, currency: str, inline: str
+        cls: Type[IdentityType], currency: str, inline: str, version: int = VERSION
     ) -> IdentityType:
         """
         Return Identity instance from inline Identity string
 
-        :param version: Document version number
         :param currency: Name of the currency
         :param inline: Inline string of the Identity
+        :param version: Document version (default=certification.VERSION)
         :return:
         """
         selfcert_data = Identity.re_inline.match(inline)
@@ -231,7 +233,7 @@ Timestamp: {timestamp}
         n += 1
         signature = Identity.parse_field("IdtySignature", lines[n])
 
-        identity = cls(version, currency, issuer, uid, timestamp)
+        identity = cls(currency, issuer, uid, timestamp, version=version)
         identity.signature = signature
 
         return identity
@@ -265,7 +267,7 @@ Timestamp: {timestamp}
         n += 1
         signature = Identity.parse_field("IdtySignature", lines[n])
 
-        identity = cls(version, currency, issuer, uid, timestamp)
+        identity = cls(currency, issuer, uid, timestamp, version=version)
         identity.signature = signature
 
         return identity
@@ -273,19 +275,18 @@ Timestamp: {timestamp}
     @classmethod
     def from_bma_lookup_response(
         cls: Type[IdentityType],
-        version: int,
         currency: str,
         pubkey: str,
         lookup_response: dict,
+        version: int = VERSION,
     ) -> IdentityType:
         """
         Return Identity instance from bma.lookup request response
 
-        :param pubkey:
-        :param version: Document version
         :param currency: Currency codename
         :param pubkey: Requested identity pubkey
         :param lookup_response: Lookup request response
+        :param version: Document version (default=identity.VERSION)
         :return:
         """
         identity = None
diff --git a/duniterpy/documents/membership.py b/duniterpy/documents/membership.py
index 0bfb90710302072f594fc2343255af2126bf8f1b..0f3e940ff97a0c8f7cfae1efc76f7b2c3098304c 100644
--- a/duniterpy/documents/membership.py
+++ b/duniterpy/documents/membership.py
@@ -25,6 +25,8 @@ from .document import Document, MalformedDocumentError
 
 MembershipType = TypeVar("MembershipType", bound="Membership")
 
+VERSION = 10
+
 
 class Membership(Document):
     """
@@ -77,7 +79,6 @@ class Membership(Document):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         issuer: str,
         membership_ts: BlockUID,
@@ -85,11 +86,11 @@ class Membership(Document):
         uid: str,
         identity_ts: BlockUID,
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Create a membership document
 
-        :param version: Version of the document
         :param currency: Name of the currency
         :param issuer: Public key of the issuer
         :param membership_ts: BlockUID of this membership
@@ -97,6 +98,7 @@ class Membership(Document):
         :param uid: Unique identifier of the identity
         :param identity_ts:  BlockUID of the identity
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=membership.VERSION)
         """
         super().__init__(version, currency)
 
@@ -112,18 +114,18 @@ class Membership(Document):
     @classmethod
     def from_inline(
         cls: Type[MembershipType],
-        version: int,
         currency: str,
         membership_type: str,
         inline: str,
+        version: int = VERSION,
     ) -> MembershipType:
         """
         Return Membership instance from inline format
 
-        :param version: Version of the document
         :param currency: Name of the currency
         :param membership_type: "IN" or "OUT" to enter or exit membership
         :param inline: Inline string format
+        :param version: Document version (default=membership.VERSION)
         :return:
         """
         data = Membership.re_inline.match(inline)
@@ -135,13 +137,13 @@ class Membership(Document):
         identity_blockstamp = BlockUID.from_str(data.group(4))
         uid = data.group(5)
         membership = cls(
-            version,
             currency,
             issuer,
             membership_blockstamp,
             membership_type,
             uid,
             identity_blockstamp,
+            version=version,
         )
 
         # return membership with signature
@@ -191,13 +193,13 @@ class Membership(Document):
         n += 1
 
         membership = cls(
-            version,
             currency,
             issuer,
             membership_blockstamp,
             membership_type,
             uid,
             identity_blockstamp,
+            version=version,
         )
 
         # return membership with signature
diff --git a/duniterpy/documents/peer.py b/duniterpy/documents/peer.py
index a7c0ce6268cd7246d91fb3ff5379694a45722990..9d81e0562aa395368be95166aa68eb9829225c7e 100644
--- a/duniterpy/documents/peer.py
+++ b/duniterpy/documents/peer.py
@@ -27,6 +27,8 @@ from .document import Document, MalformedDocumentError
 
 PeerType = TypeVar("PeerType", bound="Peer")
 
+VERSION = 10
+
 
 class Peer(Document):
     """
@@ -66,22 +68,22 @@ class Peer(Document):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         pubkey: str,
         block_uid: BlockUID,
         endpoints: List[Endpoint],
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Init Peer instance
 
-        :param version: Version of the document
         :param currency: Name of the currency
         :param pubkey: Public key of the issuer
         :param block_uid: BlockUID instance timestamp
         :param endpoints: List of endpoints string
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=peer.VERSION)
         """
         super().__init__(version, currency)
 
@@ -131,7 +133,7 @@ class Peer(Document):
             raise MalformedDocumentError("Peer")
         signature = data.group(1)
 
-        peer = cls(version, currency, pubkey, block_uid, endpoints)
+        peer = cls(currency, pubkey, block_uid, endpoints, version=version)
 
         # return peer with signature
         peer.signature = signature
@@ -172,7 +174,7 @@ Endpoints:
 
         signature = str(Peer.re_signature.match(data["signature"]))
 
-        peer = cls(version, currency, pubkey, block_uid, endpoints)
+        peer = cls(currency, pubkey, block_uid, endpoints, version=version)
 
         # return peer with signature
         peer.signature = signature
diff --git a/duniterpy/documents/revocation.py b/duniterpy/documents/revocation.py
index 1e030941db953b89bc3787f871df055ddc57d461..2aa824f044ec3f56b29763b2535fc48e06d0efb8 100644
--- a/duniterpy/documents/revocation.py
+++ b/duniterpy/documents/revocation.py
@@ -25,6 +25,8 @@ from .identity import Identity
 
 RevocationType = TypeVar("RevocationType", bound="Revocation")
 
+VERSION = 10
+
 
 class Revocation(Document):
     """
@@ -62,18 +64,18 @@ class Revocation(Document):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         identity: Union[Identity, str],
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Init Revocation instance
 
-        :param version: Version number
         :param currency: Name of the currency
         :param identity: Identity instance or identity pubkey
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=revocation.VERSION)
         """
         super().__init__(version, currency)
 
@@ -85,7 +87,7 @@ class Revocation(Document):
 
     @classmethod
     def from_inline(
-        cls: Type[RevocationType], version: int, currency: str, inline: str
+        cls: Type[RevocationType], currency: str, inline: str, version: int = VERSION
     ) -> RevocationType:
         """
         Return Revocation document instance from inline string
@@ -93,10 +95,9 @@ class Revocation(Document):
         Only self.pubkey is populated.
         You must populate self.identity with an Identity instance to use raw/sign/signed_raw methods
 
-        :param version: Version number
         :param currency: Name of the currency
         :param inline: Inline document
-
+        :param version: Document version (default=revocation.VERSION)
         :return:
         """
         cert_data = Revocation.re_inline.match(inline)
@@ -104,7 +105,7 @@ class Revocation(Document):
             raise MalformedDocumentError("Revokation")
         pubkey = cert_data.group(1)
         signature = cert_data.group(2)
-        revocation = cls(version, currency, pubkey)
+        revocation = cls(currency, pubkey, version=version)
 
         # return revocation with signature
         revocation.signature = signature
@@ -134,7 +135,7 @@ class Revocation(Document):
 
         identity = Identity.from_revocation_raw(signed_raw)
 
-        revocation = cls(version, currency, identity)
+        revocation = cls(currency, identity, version=version)
 
         # return revocation with signature
         revocation.signature = signature
diff --git a/duniterpy/documents/transaction.py b/duniterpy/documents/transaction.py
index 2d2e32b8dee3424532bd0ff9e18a3a55589a50fe..8170988b1f09c8ee4a6e1ec1a376e5c2dd34fbf3 100644
--- a/duniterpy/documents/transaction.py
+++ b/duniterpy/documents/transaction.py
@@ -32,6 +32,8 @@ from ..key import SigningKey, VerifyingKey
 from .block_uid import BlockUID
 from .document import Document, MalformedDocumentError
 
+VERSION = 10
+
 
 def reduce_base(amount: int, base: int) -> Tuple[int, int]:
     """
@@ -538,7 +540,6 @@ class Transaction(Document):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         blockstamp: Optional[BlockUID],
         locktime: int,
@@ -549,11 +550,11 @@ class Transaction(Document):
         comment: str,
         time: Optional[int] = None,
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Init Transaction instance
 
-        :param version: Version number of the document
         :param currency: Name of the currency
         :param blockstamp: BlockUID timestamp of the block
         :param locktime: Lock time in seconds
@@ -564,6 +565,7 @@ class Transaction(Document):
         :param comment: Comment field
         :param time: time when the transaction enters the blockchain
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=transaction.VERSION)
         """
         super().__init__(version, currency)
         self.blockstamp = blockstamp
@@ -730,7 +732,6 @@ Comment: {comment}
                 raise MalformedDocumentError("Compact TX Signatures")
 
         transaction = cls(
-            version,
             currency,
             blockstamp,
             locktime,
@@ -739,6 +740,7 @@ Comment: {comment}
             unlocks,
             outputs,
             comment,
+            version=version,
         )
 
         # return transaction with signatures
@@ -822,7 +824,6 @@ Comment: {comment}
                 n += 1
 
         transaction = cls(
-            version,
             currency,
             blockstamp,
             locktime,
@@ -832,6 +833,7 @@ Comment: {comment}
             outputs,
             comment,
             time,
+            version=version,
         )
 
         # return transaction with signatures
@@ -990,7 +992,6 @@ class SimpleTransaction(Transaction):
 
     def __init__(
         self,
-        version: int,
         currency: str,
         blockstamp: BlockUID,
         locktime: int,
@@ -1001,6 +1002,7 @@ class SimpleTransaction(Transaction):
         comment: str,
         time: int,
         signing_key: SigningKey = None,
+        version: int = VERSION,
     ) -> None:
         """
         Init instance
@@ -1016,9 +1018,9 @@ class SimpleTransaction(Transaction):
         :param comment: Comment field
         :param time: time when the transaction enters the blockchain
         :param signing_key: SigningKey instance to sign the document (default=None)
+        :param version: Document version (default=transaction.VERSION)
         """
         super().__init__(
-            version,
             currency,
             blockstamp,
             locktime,
@@ -1029,6 +1031,7 @@ class SimpleTransaction(Transaction):
             comment,
             time,
             signing_key=signing_key,
+            version=version,
         )
 
     @staticmethod
diff --git a/examples/save_revoke_document.py b/examples/save_revoke_document.py
index 33b274503b01b7eb791b056a9d5ffed4b158adcb..ea98a8838482ac29fd99e5a9f751ac28733e7b46 100644
--- a/examples/save_revoke_document.py
+++ b/examples/save_revoke_document.py
@@ -45,10 +45,6 @@ REVOCATION_DOCUMENT_FILE_PATH = os.path.join(
     home_path, "duniter_account_revocation_document.txt"
 )
 
-# Current protocol version
-PROTOCOL_VERSION = 10
-
-
 ################################################
 
 
@@ -68,7 +64,7 @@ def get_identity_document(
     lookup_response = client(bma.wot.lookup, pubkey)
 
     return Identity.from_bma_lookup_response(
-        PROTOCOL_VERSION, current_block["currency"], pubkey, lookup_response
+        current_block["currency"], pubkey, lookup_response
     )
 
 
@@ -85,7 +81,7 @@ def get_signed_raw_revocation_document(
     :rtype: str
     """
     key = SigningKey.from_credentials(salt, password)
-    revocation = Revocation(PROTOCOL_VERSION, identity.currency, identity, key)
+    revocation = Revocation(identity.currency, identity, key)
 
     return revocation.signed_raw()
 
diff --git a/examples/send_certification.py b/examples/send_certification.py
index 2d20578ee21f8415c977c67b7fd381efa92c8f3d..dc08e99adbb3ea111b3b0a92b9a2238bffbbd844 100644
--- a/examples/send_certification.py
+++ b/examples/send_certification.py
@@ -29,10 +29,6 @@ from duniterpy.key import SigningKey
 # Here we use the secure BASIC_MERKLED_API (BMAS)
 BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443"
 
-# Current protocol version
-PROTOCOL_VERSION = 10
-
-
 ################################################
 
 
@@ -52,7 +48,7 @@ def get_identity_document(
     lookup_response = client(bma.wot.lookup, pubkey)
 
     return Identity.from_bma_lookup_response(
-        PROTOCOL_VERSION, current_block["currency"], pubkey, lookup_response
+        current_block["currency"], pubkey, lookup_response
     )
 
 
@@ -70,7 +66,6 @@ def get_certification_document(
     """
     # construct Certification Document
     return Certification(
-        version=10,
         currency=current_block["currency"],
         pubkey_from=signing_key.pubkey,
         identity=identity,
diff --git a/examples/send_identity.py b/examples/send_identity.py
index 4b58bfc849128977a3e5e35476047c23b1b2015b..c87e15f1f4339d2c36d296ea5964eb3fbd57c367 100644
--- a/examples/send_identity.py
+++ b/examples/send_identity.py
@@ -52,7 +52,6 @@ def get_identity_document(
 
     # create identity document
     identity = Identity(
-        version=10,
         currency=current_block["currency"],
         pubkey=key.pubkey,
         uid=uid,
diff --git a/examples/send_membership.py b/examples/send_membership.py
index e47526cdafe4b024e1f0021e500eb942ee39e49f..8ff26c6320cc2f1f759574ed9a82000c334a431e 100644
--- a/examples/send_membership.py
+++ b/examples/send_membership.py
@@ -58,7 +58,6 @@ def get_membership_document(
 
     # create membership document
     membership = Membership(
-        version=10,
         currency=current_block["currency"],
         issuer=key.pubkey,
         membership_ts=timestamp,
diff --git a/examples/send_transaction.py b/examples/send_transaction.py
index 537ba3fa0520badfffba545d602593a953ce92ff..9e5dd0e902ffd8e6a7ea4f7a1d0410d41a0e8222 100644
--- a/examples/send_transaction.py
+++ b/examples/send_transaction.py
@@ -34,10 +34,6 @@ from duniterpy.key import SigningKey
 # Here we use the secure BASIC_MERKLED_API (BMAS)
 BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443"
 
-# Version of the transaction document
-TRANSACTION_VERSION = 10
-
-
 ################################################
 
 
@@ -93,7 +89,6 @@ def get_transaction_document(
     ]
 
     transaction = Transaction(
-        version=TRANSACTION_VERSION,
         currency=current_block["currency"],
         blockstamp=BlockUID(current_block["number"], current_block["hash"]),
         locktime=0,
diff --git a/tests/api/ws2p/test_ws2p.py b/tests/api/ws2p/test_ws2p.py
index 9461c78fff6ded921e841482e58d1e11f1d5d304..63216808e03af4fddc72c865e6cb171019d2fee2 100644
--- a/tests/api/ws2p/test_ws2p.py
+++ b/tests/api/ws2p/test_ws2p.py
@@ -188,11 +188,11 @@ class TestWs2p(unittest.TestCase):
         document_message = DocumentMessage()
         # prepare document
         identity_document = Identity(
-            10,
             "beta_brousouf",
             "HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd",
             "lolcat",
             BlockUID(32, "DB30D958EE5CB75186972286ED3F4686B8A1C2CD"),
+            version=10,
         )
         # get json string message
         json_document_message = document_message.get_json(
diff --git a/tests/documents/test_certification.py b/tests/documents/test_certification.py
index e5fcee3b0b220d3fbd1201803aca0a11f33525f4..a9902267961ef2a9478b90c22385ad96bb552a68 100644
--- a/tests/documents/test_certification.py
+++ b/tests/documents/test_certification.py
@@ -45,7 +45,7 @@ class TestCertification(unittest.TestCase):
     def test_self_certification_from_inline(self):
         version = 2
         currency = "beta_brousouf"
-        selfcert = Identity.from_inline(version, currency, selfcert_inlines[0])
+        selfcert = Identity.from_inline(currency, selfcert_inlines[0], version)
         self.assertEqual(
             selfcert.pubkey, "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
         )
@@ -58,7 +58,7 @@ class TestCertification(unittest.TestCase):
         )
         self.assertEqual(selfcert.uid, "lolcat")
 
-        selfcert = Identity.from_inline(version, currency, selfcert_inlines[1])
+        selfcert = Identity.from_inline(currency, selfcert_inlines[1], version)
         self.assertEqual(selfcert.pubkey, "RdrHvL179Rw62UuyBrqy2M1crx7RPajaViBatS59EGS")
         self.assertEqual(
             selfcert.signature,
@@ -77,7 +77,7 @@ class TestCertification(unittest.TestCase):
         timestamp = BlockUID(32, "DB30D958EE5CB75186972286ED3F4686B8A1C2CD")
         signature = "J3G9oM5AKYZNLAB5Wx499w61NuUoS57JVccTShUbGpCMjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBfCznzyci"
 
-        selfcert = Identity(version, currency, issuer, uid, timestamp)
+        selfcert = Identity(currency, issuer, uid, timestamp, version=version)
         selfcert.signature = signature
 
         result = """Version: 2
@@ -96,7 +96,7 @@ J3G9oM5AKYZNLAB5Wx499w61NuUoS57JVccTShUbGpCMjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBf
     def test_certifications_from_inline(self):
         version = 2
         currency = "zeta_brousouf"
-        cert = Certification.from_inline(version, currency, None, cert_inlines[0])
+        cert = Certification.from_inline(currency, None, cert_inlines[0], version)
         self.assertEqual(
             cert.pubkey_from, "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU"
         )
@@ -109,10 +109,10 @@ J3G9oM5AKYZNLAB5Wx499w61NuUoS57JVccTShUbGpCMjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBf
         )
 
         cert = Certification.from_inline(
-            version,
             currency,
             "DB30D958EE5CB75186972286ED3F4686B8A1C2CD",
             cert_inlines[1],
+            version,
         )
         self.assertEqual(
             cert.pubkey_from, "9fx25FmeBDJcikZLWxK5HuzKNbY6MaWYXoK1ajteE42Y"
@@ -135,16 +135,16 @@ J3G9oM5AKYZNLAB5Wx499w61NuUoS57JVccTShUbGpCMjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBf
         timestamp = BlockUID(36, "1076F10A7397715D2BEE82579861999EA1F274AC")
         signature = "SoKwoa8PFfCDJWZ6dNCv7XstezHcc2BbKiJgVDXv82R5zYR83nis9dShLgWJ5w48noVUHimdngzYQneNYSMV3rk"
         identity = Identity(
-            version,
             currency,
             pubkey_to,
             "lolcat",
             BlockUID(32, "DB30D958EE5CB75186972286ED3F4686B8A1C2CD"),
+            version=version,
         )
         identity.signature = "J3G9oM5AKYZNLAB5Wx499w61NuUoS57JVccTShUbGpCMjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBfCznzyci"
 
         certification = Certification(
-            version, currency, pubkey_from, identity, timestamp
+            currency, pubkey_from, identity, timestamp, version=version
         )
         certification.signature = signature
 
@@ -167,7 +167,7 @@ SoKwoa8PFfCDJWZ6dNCv7XstezHcc2BbKiJgVDXv82R5zYR83nis9dShLgWJ5w48noVUHimdngzYQneN
     def test_revokation_from_inline(self):
         version = 2
         currency = "zeta_brousouf"
-        revokation = Revocation.from_inline(version, currency, revokation_inline)
+        revokation = Revocation.from_inline(currency, revokation_inline, version)
         self.assertEqual(
             revokation.pubkey, "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU"
         )
@@ -182,15 +182,15 @@ SoKwoa8PFfCDJWZ6dNCv7XstezHcc2BbKiJgVDXv82R5zYR83nis9dShLgWJ5w48noVUHimdngzYQneN
         pubkey = "HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd"
         signature = "SoKwoa8PFfCDJWZ6dNCv7XstezHcc2BbKiJgVDXv82R5zYR83nis9dShLgWJ5w48noVUHimdngzYQneNYSMV3rk"
         identity = Identity(
-            version,
             currency,
             pubkey,
             "lolcat",
             BlockUID(32, "DB30D958EE5CB75186972286ED3F4686B8A1C2CD"),
+            version=version,
         )
         identity.signature = "J3G9oM5AKYZNLAB5Wx499w61NuUoS57JVccTShUbGpCMjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBfCznzyci"
 
-        revokation = Revocation(version, currency, identity)
+        revokation = Revocation(currency, identity, version=version)
         revokation.signature = signature
 
         result = """Version: 2
diff --git a/tests/documents/test_membership.py b/tests/documents/test_membership.py
index 0fd90c9f87c588842a97c791261cb371d050b728..0ec660a4cdf38da65a64f00544da983561917c8e 100644
--- a/tests/documents/test_membership.py
+++ b/tests/documents/test_membership.py
@@ -35,7 +35,7 @@ dkaXIiCYUJtCg8Feh/BKvPYf4uFH9CJ/zY6J4MlA9BsjmcMe4YAblvNt/gJy31b1aGq3ue3h14mLMCu8
 
 class TestMembership(unittest.TestCase):
     def test_frominline(self):
-        membership = Membership.from_inline(2, "zeta_brousouf", "IN", membership_inline)
+        membership = Membership.from_inline("zeta_brousouf", "IN", membership_inline, 2)
         self.assertEqual(
             membership.issuer, "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
         )
diff --git a/tests/documents/test_transaction.py b/tests/documents/test_transaction.py
index 1adbcc41c6215c96d626b64dfa8ac766fa6940bd..56994569b21f1b48ccd558a2a17a7f6b1419fa46 100644
--- a/tests/documents/test_transaction.py
+++ b/tests/documents/test_transaction.py
@@ -433,7 +433,6 @@ class TestTransaction(unittest.TestCase):
 
     def test_transaction_document_generation(self):
         transaction = Transaction(
-            version=10,
             currency="gtest",
             blockstamp=BlockUID(
                 8979, "000041DF0CCA173F09B5FBA48F619D4BC934F12ADF1D0B798639EB2149C4A8CC"
@@ -467,7 +466,6 @@ class TestTransaction(unittest.TestCase):
         ]
 
         transaction = Transaction(
-            version=12,
             currency="g1-test",
             blockstamp=BlockUID(
                 8979, "000041DF0CCA173F09B5FBA48F619D4BC934F12ADF1D0B798639EB2149C4A8CC"