diff --git a/src/Neo/Neo.csproj b/src/Neo/Neo.csproj
index 09e05249e5..8ffc0874a9 100644
--- a/src/Neo/Neo.csproj
+++ b/src/Neo/Neo.csproj
@@ -14,6 +14,7 @@
+
diff --git a/src/Neo/SmartContract/Native/CryptoLib.BLS12_381.cs b/src/Neo/SmartContract/Native/CryptoLib.BLS12_381.cs
new file mode 100644
index 0000000000..28e1c063b7
--- /dev/null
+++ b/src/Neo/SmartContract/Native/CryptoLib.BLS12_381.cs
@@ -0,0 +1,134 @@
+using Neo.Cryptography.BLS12_381;
+using Neo.VM.Types;
+using System;
+
+namespace Neo.SmartContract.Native;
+
+partial class CryptoLib
+{
+ ///
+ /// Serialize a bls12381 point.
+ ///
+ /// The point to be serialized.
+ ///
+ [ContractMethod(CpuFee = 1 << 19)]
+ public static byte[] Bls12381Serialize(InteropInterface g)
+ {
+ return g.GetInterface