diff --git a/lib/dubp/block-doc/src/block.rs b/lib/dubp/block-doc/src/block.rs
index 7ca98b4a46ef0d0be5cda7c3f063f5c270c84793..f5373dda9b0666c98849a0efa62c1f78f25880d8 100644
--- a/lib/dubp/block-doc/src/block.rs
+++ b/lib/dubp/block-doc/src/block.rs
@@ -90,7 +90,7 @@ pub trait BlockDocumentTrait {
     /// Verify block hash
     fn verify_hash(&self) -> Result<(), VerifyBlockHashError>;
     /// Sign block
-    fn sign(&mut self, signator: SignatorEnum);
+    fn sign(&mut self, signator: &SignatorEnum);
 }
 
 impl BlockDocumentTrait for BlockDocument {
@@ -209,7 +209,7 @@ impl BlockDocumentTrait for BlockDocument {
         }
     }
     #[inline]
-    fn sign(&mut self, signator: SignatorEnum) {
+    fn sign(&mut self, signator: &SignatorEnum) {
         match self {
             BlockDocument::V10(block) => block.sign(signator),
         }
diff --git a/lib/dubp/block-doc/src/block/v10.rs b/lib/dubp/block-doc/src/block/v10.rs
index 893807ce6059b5b2f7a67d86f87ac39fc274d08f..2979edfad58a695a63110e92822c067329c6a2e7 100644
--- a/lib/dubp/block-doc/src/block/v10.rs
+++ b/lib/dubp/block-doc/src/block/v10.rs
@@ -311,7 +311,7 @@ Transactions:{transactions}
             i.reduce();
         }
     }
-    fn sign(&mut self, signator: SignatorEnum) {
+    fn sign(&mut self, signator: &SignatorEnum) {
         self.signatures = vec![signator.sign(self.compute_will_signed_string().as_bytes())];
     }
     fn verify_inner_hash(&self) -> Result<(), VerifyBlockHashError> {