diff --git a/Contracts/DigitalSignature.sol b/Contracts/DigitalSignature.sol
index f9a551d77e073117ed8625c6681c95a02c4fb9f2..c687e4642cb457e6455731cf15cc0f7af30fb1a3 100644
--- a/Contracts/DigitalSignature.sol
+++ b/Contracts/DigitalSignature.sol
@@ -15,7 +15,8 @@ contract DigitalSignature {
         string digitalSignature;
     }
 
-    mapping(string => DigitalSignatureOwnership) public digitalSignatures;
+    mapping(string => DigitalSignatureOwnership) public digitalSignatureByRef;
+    mapping(string => DigitalSignatureOwnership) public digitalSignatureByHash;
 
     modifier onlyAdmin() {
         require(msg.sender == admin, "Caller is not the admin");
@@ -23,12 +24,20 @@ contract DigitalSignature {
     }
 
     modifier onlyWhitelisted() {
-        require(whitelisted[msg.sender] == true, "Not whitelised");
+        require(whitelisted[msg.sender] == true, "Not whitelisted");
         _;
     }
 
-    function addWhitelist(address trustworthy) public onlyAdmin {
-        whitelisted[trustworthy] = true;
+    function changeAdmin(address _newAdmin) public onlyAdmin {
+        admin = _newAdmin;
+    }
+
+    function addWhitelist(address _trustworthy) public onlyAdmin {
+        whitelisted[_trustworthy] = true;
+    }
+
+    function removeWhitelist(address _untrustworthy) public onlyAdmin {
+        whitelisted[_untrustworthy] = false;
     }
 
     function addOrUpdateDigitalSignature(
@@ -36,19 +45,28 @@ contract DigitalSignature {
         string memory _hash,
         string memory _digitalSignature
     ) public onlyWhitelisted {
-        DigitalSignatureOwnership memory digSigCurrent = digitalSignatures[_ref];
+        DigitalSignatureOwnership memory digSigCurrent = digitalSignatureByHash[_hash];
+        DigitalSignatureOwnership memory digSigCurrentRef = digitalSignatureByHash[_ref];
+
         if (digSigCurrent.owner == address(0)) {
             digSigCurrent.owner = msg.sender;
             digSigCurrent.hash = _hash;
+            digSigCurrentRef = digSigCurrent;
         } else {
             require(digSigCurrent.owner == msg.sender, "Not owner");
         }
+        
+        if (digSigCurrentRef.owner == address(0)) {
+            digitalSignatureByRef[_ref] = digSigCurrent;
+        }
 
-        require(keccak256(bytes(digSigCurrent.hash)) == keccak256(bytes(_hash)), "Different hash");
-        digitalSignatures[_ref].digitalSignature = _digitalSignature;
+        require(keccak256(abi.encode(digSigCurrentRef.hash)) == keccak256(abi.encode(_hash)), "Different hash");
+        digSigCurrent.digitalSignature = _digitalSignature;
+        digitalSignatureByHash[_hash] = digSigCurrent;
+        digitalSignatureByRef[_ref] = digSigCurrent;
     }
 
     function getDigitalSignature(string memory _ref) public view returns (string memory) {
-        return digitalSignatures[_ref].digitalSignature;
+        return digitalSignatureByRef[_ref].digitalSignature;
     }
 }
\ No newline at end of file
diff --git a/node1/geth/chaindata/000057.ldb b/node1/geth/chaindata/000057.ldb
new file mode 100644
index 0000000000000000000000000000000000000000..a8960e684e4d13d1ceb258d0ea4f4f102f1b639c
Binary files /dev/null and b/node1/geth/chaindata/000057.ldb differ
diff --git a/node1/geth/chaindata/000060.ldb b/node1/geth/chaindata/000060.ldb
new file mode 100644
index 0000000000000000000000000000000000000000..97c04f19850918cc4f35772ba7ec2ef0c464db6f
Binary files /dev/null and b/node1/geth/chaindata/000060.ldb differ
diff --git a/node1/geth/chaindata/000061.log b/node1/geth/chaindata/000061.log
new file mode 100644
index 0000000000000000000000000000000000000000..b3ec2eee710f1b451234106fc9b4f49f0815a8ea
Binary files /dev/null and b/node1/geth/chaindata/000061.log differ
diff --git a/node1/geth/chaindata/CURRENT b/node1/geth/chaindata/CURRENT
index 80d9de0bbde640ee0510aecc834b28e39967c155..5ca571d22d0bd4bd525d4bd3da0b9872d77737e5 100644
--- a/node1/geth/chaindata/CURRENT
+++ b/node1/geth/chaindata/CURRENT
@@ -1 +1 @@
-MANIFEST-000056
+MANIFEST-000062
diff --git a/node1/geth/chaindata/CURRENT.bak b/node1/geth/chaindata/CURRENT.bak
index f774e854901d362c4433778058d2bd873c74db01..e4c5073e2abee45303f6cf38dcb301209b470d30 100644
--- a/node1/geth/chaindata/CURRENT.bak
+++ b/node1/geth/chaindata/CURRENT.bak
@@ -1 +1 @@
-MANIFEST-000052
+MANIFEST-000059
diff --git a/node1/geth/chaindata/LOG b/node1/geth/chaindata/LOG
index a4af61dd27ce23eeac6a4f36fbde29f8d886158a..e2389446806fbe0923ce80b07fe278e9d267c163 100644
--- a/node1/geth/chaindata/LOG
+++ b/node1/geth/chaindata/LOG
@@ -242,3 +242,27 @@
 13:08:04.856588 db@open done T·646.0142ms
 13:33:56.207780 db@close closing
 13:33:56.212569 db@close done T·4.7889ms
+=============== Jun 6, 2022 (+07) ===============
+18:59:41.268118 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
+18:59:41.268118 version@stat F·[1 1] S·92KiB[433B 91KiB] Sc·[0.25 0.00]
+18:59:41.268118 db@open opening
+18:59:41.268118 journal@recovery F·1
+18:59:41.339678 journal@recovery recovering @55
+18:59:41.718692 memdb@flush created L0@57 N·9 S·445B "Sna..tor,v1827":"unc..own,v1821"
+18:59:41.799445 version@stat F·[2 1] S·92KiB[878B 91KiB] Sc·[0.50 0.00]
+18:59:42.211604 db@janitor F·7 G·2
+18:59:42.211723 db@janitor removing journal-1
+18:59:42.212784 db@janitor removing manifest-0
+18:59:42.214183 db@open done T·946.065ms
+=============== Jun 6, 2022 (+07) ===============
+20:07:06.082184 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
+20:07:06.258828 version@stat F·[2 1] S·92KiB[878B 91KiB] Sc·[0.50 0.00]
+20:07:06.258864 db@open opening
+20:07:06.259435 journal@recovery F·1
+20:07:06.262177 journal@recovery recovering @58
+20:07:06.555632 memdb@flush created L0@60 N·65 S·8KiB "H*\xd0..\x86R\x1a,v1877":"unc..own,v1831"
+20:07:06.571650 version@stat F·[3 1] S·101KiB[9KiB 91KiB] Sc·[0.75 0.00]
+20:07:06.956849 db@janitor F·6 G·0
+20:07:06.956849 db@open done T·697.9851ms
+21:11:20.641965 db@close closing
+21:11:27.529164 db@close done T·6.9933321s
diff --git a/node1/geth/chaindata/MANIFEST-000062 b/node1/geth/chaindata/MANIFEST-000062
new file mode 100644
index 0000000000000000000000000000000000000000..076772b31e3a6f20b3561988ef07b50b615ec489
Binary files /dev/null and b/node1/geth/chaindata/MANIFEST-000062 differ
diff --git a/node1/geth/nodes/000355.ldb b/node1/geth/nodes/000355.ldb
new file mode 100644
index 0000000000000000000000000000000000000000..f2e1f7a40de287f33b0f3317bd47e8c4662cfd72
Binary files /dev/null and b/node1/geth/nodes/000355.ldb differ
diff --git a/node1/geth/nodes/000360.log b/node1/geth/nodes/000360.log
new file mode 100644
index 0000000000000000000000000000000000000000..53aa3598a7c585a78a47679979612097dc9d3545
Binary files /dev/null and b/node1/geth/nodes/000360.log differ
diff --git a/node1/geth/nodes/000362.ldb b/node1/geth/nodes/000362.ldb
new file mode 100644
index 0000000000000000000000000000000000000000..4858be33e35cb5b5a218c513cfb14784cda57d0d
Binary files /dev/null and b/node1/geth/nodes/000362.ldb differ
diff --git a/node1/geth/nodes/000363.ldb b/node1/geth/nodes/000363.ldb
new file mode 100644
index 0000000000000000000000000000000000000000..6fb252f3f4fd9af67484ab08aec0036e941f200f
Binary files /dev/null and b/node1/geth/nodes/000363.ldb differ
diff --git a/node1/geth/nodes/CURRENT b/node1/geth/nodes/CURRENT
index 85b0556f0e9cf51bc183a88201f11dc73124fea5..683373ae835e2706c71a1ba3be149bfdcbf1df24 100644
--- a/node1/geth/nodes/CURRENT
+++ b/node1/geth/nodes/CURRENT
@@ -1 +1 @@
-MANIFEST-000343
+MANIFEST-000357
diff --git a/node1/geth/nodes/CURRENT.bak b/node1/geth/nodes/CURRENT.bak
index 6b297867fc79d54a778314e01b4072766fece988..549acb4ebc2cbb1be60c718b34e0db64359cc662 100644
--- a/node1/geth/nodes/CURRENT.bak
+++ b/node1/geth/nodes/CURRENT.bak
@@ -1 +1 @@
-MANIFEST-000338
+MANIFEST-000348
diff --git a/node1/geth/nodes/LOG b/node1/geth/nodes/LOG
index 6a7b64dcc89c6b7b2f387f5efa7488c99ec9621d..4c109039a2c85878928702e8b0bab851ea2e5e39 100644
--- a/node1/geth/nodes/LOG
+++ b/node1/geth/nodes/LOG
@@ -1448,3 +1448,69 @@
 13:08:45.583701 table@remove removed @340
 13:33:56.533043 db@close closing
 13:33:57.309771 db@close done T·776.7283ms
+=============== Jun 6, 2022 (+07) ===============
+18:59:43.312024 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
+18:59:43.313867 version@stat F·[0 2] S·2MiB[0B 2MiB] Sc·[0.00 0.03]
+18:59:43.313867 db@open opening
+18:59:43.314420 journal@recovery F·1
+18:59:43.413323 journal@recovery recovering @342
+18:59:43.897622 memdb@flush created L0@346 N·13159 S·306KiB "loc..seq,v883714":"n:\xfe..ong,v883741"
+18:59:43.912892 version@stat F·[1 2] S·3MiB[306KiB 2MiB] Sc·[0.25 0.03]
+18:59:45.086782 db@janitor F·8 G·3
+18:59:45.086782 db@janitor removing journal-1
+18:59:45.088015 db@janitor removing table-341
+18:59:45.089310 db@janitor removing manifest-0
+18:59:45.091056 db@open done T·1.7771889s
+18:59:45.493300 table@compaction L0·1 -> L1·2 S·3MiB Q·896875
+18:59:46.624039 table@build created L1@349 N·47477 S·2MiB "loc..seq,v883714":"n:\xa8..ail,v232399"
+19:00:04.530216 table@build created L1@350 N·23795 S·1022KiB "n:\xa8..ail,v232385":"version,v1"
+19:00:04.828552 version@stat F·[0 2] S·3MiB[0B 3MiB] Sc·[0.00 0.03]
+19:00:05.599139 table@compaction committed F-1 S-164KiB Ke·0 D·9223 T·20.1058395s
+19:00:05.609370 table@remove removed @344
+19:00:05.609370 table@remove removed @345
+19:55:15.865489 memdb@flush N·36965 S·3MiB
+19:55:16.815455 memdb@flush created L0@352 N·36965 S·754KiB "loc..seq,v896881":"n:\xff..ong,v912095"
+19:55:16.815455 version@stat F·[1 2] S·3MiB[754KiB 3MiB] Sc·[0.25 0.03]
+19:55:16.995147 memdb@flush committed F·1 T·963.3355ms
+19:55:17.091276 journal@remove removed @347
+19:55:41.408387 table@compaction L0·1 -> L1·2 S·3MiB Q·934193
+19:55:48.252409 table@build created L1@353 N·48192 S·2MiB "loc..seq,v896881":"n:\x9a..ail,v8816"
+19:55:50.270815 table@build created L1@354 N·31023 S·1MiB "n:\x9a..ail,v8824":"version,v1"
+19:55:50.270815 version@stat F·[0 2] S·3MiB[0B 3MiB] Sc·[0.00 0.03]
+19:55:50.330172 table@compaction committed F-1 S-463KiB Ke·0 D·29022 T·8.9217857s
+19:55:50.332417 table@remove removed @352
+19:55:50.371032 table@remove removed @349
+19:55:50.458089 table@remove removed @350
+=============== Jun 6, 2022 (+07) ===============
+20:07:08.117829 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
+20:07:08.141031 version@stat F·[0 2] S·3MiB[0B 3MiB] Sc·[0.00 0.03]
+20:07:08.141593 db@open opening
+20:07:08.142124 journal@recovery F·1
+20:07:08.144843 journal@recovery recovering @351
+20:07:08.773735 memdb@flush created L0@355 N·26798 S·673KiB "n:\x00..ing,d937736":"n:\xff..ong,d954586"
+20:07:08.777600 version@stat F·[1 2] S·3MiB[673KiB 3MiB] Sc·[0.25 0.03]
+20:07:09.249366 db@janitor F·6 G·1
+20:07:09.249366 db@janitor removing table-346
+20:07:09.308378 db@open done T·1.1660961s
+20:07:11.927231 table@compaction L0·1 -> L1·2 S·3MiB Q·960640
+20:07:13.315639 table@build created L1@358 N·45554 S·2MiB "loc..seq,v896881":"n:\xb3..ail,v586350"
+20:07:14.610520 table@build created L1@359 N·18713 S·843KiB "n:\xb3..ail,v287307":"version,v1"
+20:07:14.619144 version@stat F·[0 2] S·2MiB[0B 2MiB] Sc·[0.00 0.03]
+20:07:14.699146 table@compaction committed F-1 S-1MiB Ke·0 D·41746 T·2.7518385s
+20:07:14.707189 table@remove removed @353
+20:07:14.708888 table@remove removed @354
+20:58:42.275884 memdb@flush N·36625 S·3MiB
+20:58:43.661266 memdb@flush created L0@361 N·36625 S·730KiB "loc..seq,v960638":"n:\xff..ong,v968517"
+20:58:43.682962 version@stat F·[1 2] S·3MiB[730KiB 2MiB] Sc·[0.25 0.03]
+20:58:43.797421 memdb@flush committed F·1 T·1.3082406s
+20:58:44.015348 journal@remove removed @356
+20:59:04.159415 table@compaction L0·1 -> L1·2 S·3MiB Q·997626
+20:59:05.720544 table@build created L1@362 N·46479 S·2MiB "loc..seq,v960638":"n:\xa4..ail,v538046"
+20:59:06.403131 table@build created L1@363 N·25733 S·1MiB "n:\xa4..ail,v538045":"version,v1"
+20:59:06.411454 version@stat F·[0 2] S·3MiB[0B 3MiB] Sc·[0.00 0.03]
+20:59:06.461538 table@compaction committed F-1 S-441KiB Ke·0 D·28680 T·2.29151s
+20:59:06.483016 table@remove removed @361
+20:59:06.571402 table@remove removed @358
+20:59:06.589550 table@remove removed @359
+21:11:33.054114 db@close closing
+21:11:37.969434 db@close done T·4.9153201s
diff --git a/node1/geth/nodes/MANIFEST-000357 b/node1/geth/nodes/MANIFEST-000357
new file mode 100644
index 0000000000000000000000000000000000000000..04cce41df5cf937832e60caba47459502af65e7b
Binary files /dev/null and b/node1/geth/nodes/MANIFEST-000357 differ
diff --git a/node1/geth/triecache/data.0.bin b/node1/geth/triecache/data.0.bin
index 45c2249bb20d02acebea990f02d80ce22d16a4d9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
Binary files a/node1/geth/triecache/data.0.bin and b/node1/geth/triecache/data.0.bin differ
diff --git a/node1/geth/triecache/data.1.bin b/node1/geth/triecache/data.1.bin
index a5446397cb90f1f33c93017f147008403608e06a..9e833dfb72060ea1d7d6e981abd1cc0756f9c4e5 100644
Binary files a/node1/geth/triecache/data.1.bin and b/node1/geth/triecache/data.1.bin differ
diff --git a/node1/geth/triecache/data.2.bin b/node1/geth/triecache/data.2.bin
index 751fe22242cc7f93091da7f9c08f1f34b9d21fea..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
Binary files a/node1/geth/triecache/data.2.bin and b/node1/geth/triecache/data.2.bin differ
diff --git a/node1/geth/triecache/data.3.bin b/node1/geth/triecache/data.3.bin
index 50a596454f6e0fbaa01bb6f5dc02f3992908017b..3a7d28e56bd7bad2786c2081050ac0b4c81b1891 100644
Binary files a/node1/geth/triecache/data.3.bin and b/node1/geth/triecache/data.3.bin differ
diff --git a/node1/history b/node1/history
index 2bccd40ba6208225d37ed6e5d1320498b40ff7c4..26b95d8e2f4594bd53e56fce51b7ce4e34558472 100644
--- a/node1/history
+++ b/node1/history
@@ -123,4 +123,9 @@ txpool.content
 eth.getTransaction("0xdd4a3606e71bfc761251ed14961f3e4a784e87fa0b3883df1d0cee52627dcc10")
 eth.getTransactionReceipt("0xdd4a3606e71bfc761251ed14961f3e4a784e87fa0b3883df1d0cee52627dcc10")
 eth.getRawTransaction("0xdd4a3606e71bfc761251ed14961f3e4a784e87fa0b3883df1d0cee52627dcc10")
-admin.addPeer("enode://491cd65010c8112f54ad471b920adfa6c5b6ffd9dd00aecf897d9e62176d39a5259107d87af3729301f8b3c0a8fa3eed09262c581a6dadf94493e760e732ae14@127.0.0.1:30304")
\ No newline at end of file
+admin.addPeer("enode://491cd65010c8112f54ad471b920adfa6c5b6ffd9dd00aecf897d9e62176d39a5259107d87af3729301f8b3c0a8fa3eed09262c581a6dadf94493e760e732ae14@127.0.0.1:30304")
+eth.getTransaction("0xe8b885c11d35520c47b29f5d4634705bfad7f3ac39a2cc6fda8f91f931a9ef5c")
+eth.getTransactionReceipt("0x2c005af599db243ef3c618f5fc37de8ec6cd46d0c20f37ed36060ad2ef3263d7")
+debug.traceTransaction("0x2c005af599db243ef3c618f5fc37de8ec6cd46d0c20f37ed36060ad2ef3263d7")
+eth.getTransaction("0xc799e1ee22d6fa89eebd30fcd86e7338444dbd840ac1119f0fa52a5df85c5385")
+eth.getTransaction("0xb28ad9e1175245e7144c64d1d4a9ff3e17f6846eb9a1ee20f2c47fd361ee6b52")
\ No newline at end of file