Skip to content

Commit 4c60441

Browse files
authored
Update native contracts (#967)
* Update native contracts * clean using * Add ut * Split ut * clean test
1 parent 5590377 commit 4c60441

File tree

16 files changed

+209
-107
lines changed

16 files changed

+209
-107
lines changed

neo

src/Neo.SmartContract.Framework/Native/CryptoLib.cs

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public static partial class CryptoLib
2424

2525
public static extern ByteString Ripemd160(ByteString value);
2626

27+
public static extern ByteString keccak256(ByteString value);
28+
2729
public static extern ByteString Murmur32(ByteString value, uint seed);
2830

2931
public static extern bool VerifyWithECDsa(ByteString message, ECPoint pubkey, ByteString signature, NamedCurve curve);

src/Neo.SmartContract.Testing/Native/ContractManagement.cs

+21-12
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,42 @@ namespace Neo.SmartContract.Testing.Native;
66

77
public abstract class ContractManagement : SmartContract
88
{
9+
#region Compiled data
10+
11+
public static readonly Manifest.ContractManifest Manifest = Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""ContractManagement"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""deploy"",""parameters"":[{""name"":""nefFile"",""type"":""ByteArray""},{""name"":""manifest"",""type"":""ByteArray""}],""returntype"":""Array"",""offset"":0,""safe"":false},{""name"":""deploy"",""parameters"":[{""name"":""nefFile"",""type"":""ByteArray""},{""name"":""manifest"",""type"":""ByteArray""},{""name"":""data"",""type"":""Any""}],""returntype"":""Array"",""offset"":7,""safe"":false},{""name"":""destroy"",""parameters"":[],""returntype"":""Void"",""offset"":14,""safe"":false},{""name"":""getContract"",""parameters"":[{""name"":""hash"",""type"":""Hash160""}],""returntype"":""Array"",""offset"":21,""safe"":true},{""name"":""getContractById"",""parameters"":[{""name"":""id"",""type"":""Integer""}],""returntype"":""Array"",""offset"":28,""safe"":true},{""name"":""getContractHashes"",""parameters"":[],""returntype"":""InteropInterface"",""offset"":35,""safe"":true},{""name"":""getMinimumDeploymentFee"",""parameters"":[],""returntype"":""Integer"",""offset"":42,""safe"":true},{""name"":""hasMethod"",""parameters"":[{""name"":""hash"",""type"":""Hash160""},{""name"":""method"",""type"":""String""},{""name"":""pcount"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":49,""safe"":true},{""name"":""setMinimumDeploymentFee"",""parameters"":[{""name"":""value"",""type"":""Integer""}],""returntype"":""Void"",""offset"":56,""safe"":false},{""name"":""update"",""parameters"":[{""name"":""nefFile"",""type"":""ByteArray""},{""name"":""manifest"",""type"":""ByteArray""}],""returntype"":""Void"",""offset"":63,""safe"":false},{""name"":""update"",""parameters"":[{""name"":""nefFile"",""type"":""ByteArray""},{""name"":""manifest"",""type"":""ByteArray""},{""name"":""data"",""type"":""Any""}],""returntype"":""Void"",""offset"":70,""safe"":false}],""events"":[{""name"":""Deploy"",""parameters"":[{""name"":""Hash"",""type"":""Hash160""}]},{""name"":""Update"",""parameters"":[{""name"":""Hash"",""type"":""Hash160""}]},{""name"":""Destroy"",""parameters"":[{""name"":""Hash"",""type"":""Hash160""}]}]},""permissions"":[{""contract"":""*"",""methods"":""*""}],""trusts"":[],""extra"":null}");
12+
13+
#endregion
14+
915
#region Events
1016

11-
public delegate void delDeploy(UInt160 Hash);
17+
public delegate void delDeploy(UInt160? Hash);
1218

1319
[DisplayName("Deploy")]
1420
public event delDeploy? OnDeploy;
15-
public delegate void delDestroy(UInt160 Hash);
21+
22+
public delegate void delDestroy(UInt160? Hash);
1623

1724
[DisplayName("Destroy")]
1825
public event delDestroy? OnDestroy;
19-
public delegate void delUpdate(UInt160 Hash);
26+
27+
public delegate void delUpdate(UInt160? Hash);
2028

2129
[DisplayName("Update")]
2230
public event delUpdate? OnUpdate;
31+
2332
#endregion
2433

2534
#region Properties
2635

2736
/// <summary>
2837
/// Safe property
2938
/// </summary>
30-
public abstract IIterator ContractHashes { [DisplayName("getContractHashes")] get; }
39+
public abstract IIterator? ContractHashes { [DisplayName("getContractHashes")] get; }
3140

3241
/// <summary>
3342
/// Safe property
3443
/// </summary>
35-
public abstract BigInteger MinimumDeploymentFee { [DisplayName("getMinimumDeploymentFee")] get; [DisplayName("setMinimumDeploymentFee")] set; }
44+
public abstract BigInteger? MinimumDeploymentFee { [DisplayName("getMinimumDeploymentFee")] get; [DisplayName("setMinimumDeploymentFee")] set; }
3645

3746
#endregion
3847

@@ -42,19 +51,19 @@ public abstract class ContractManagement : SmartContract
4251
/// Safe method
4352
/// </summary>
4453
[DisplayName("getContract")]
45-
public abstract ContractState? GetContract(UInt160 hash);
54+
public abstract ContractState? GetContract(UInt160? hash);
4655

4756
/// <summary>
4857
/// Safe method
4958
/// </summary>
5059
[DisplayName("getContractById")]
51-
public abstract ContractState? GetContractById(BigInteger id);
60+
public abstract ContractState? GetContractById(BigInteger? id);
5261

5362
/// <summary>
5463
/// Safe method
5564
/// </summary>
5665
[DisplayName("hasMethod")]
57-
public abstract bool HasMethod(UInt160 hash, string method, BigInteger pcount);
66+
public abstract bool? HasMethod(UInt160? hash, string? method, BigInteger? pcount);
5867

5968
#endregion
6069

@@ -64,13 +73,13 @@ public abstract class ContractManagement : SmartContract
6473
/// Unsafe method
6574
/// </summary>
6675
[DisplayName("deploy")]
67-
public abstract ContractState Deploy(byte[] nefFile, byte[] manifest);
76+
public abstract ContractState? Deploy(byte[]? nefFile, byte[]? manifest);
6877

6978
/// <summary>
7079
/// Unsafe method
7180
/// </summary>
7281
[DisplayName("deploy")]
73-
public abstract ContractState Deploy(byte[] nefFile, byte[] manifest, object? data = null);
82+
public abstract ContractState? Deploy(byte[]? nefFile, byte[]? manifest, object? data = null);
7483

7584
/// <summary>
7685
/// Unsafe method
@@ -82,13 +91,13 @@ public abstract class ContractManagement : SmartContract
8291
/// Unsafe method
8392
/// </summary>
8493
[DisplayName("update")]
85-
public abstract void Update(byte[] nefFile, byte[] manifest);
94+
public abstract void Update(byte[]? nefFile, byte[]? manifest);
8695

8796
/// <summary>
8897
/// Unsafe method
8998
/// </summary>
9099
[DisplayName("update")]
91-
public abstract void Update(byte[] nefFile, byte[] manifest, object? data = null);
100+
public abstract void Update(byte[]? nefFile, byte[]? manifest, object? data = null);
92101

93102
#endregion
94103

src/Neo.SmartContract.Testing/Native/CryptoLib.cs

+16-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ namespace Neo.SmartContract.Testing.Native;
55

66
public abstract class CryptoLib : SmartContract
77
{
8+
#region Compiled data
9+
10+
public static readonly Manifest.ContractManifest Manifest = Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""CryptoLib"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""bls12381Add"",""parameters"":[{""name"":""x"",""type"":""InteropInterface""},{""name"":""y"",""type"":""InteropInterface""}],""returntype"":""InteropInterface"",""offset"":0,""safe"":true},{""name"":""bls12381Deserialize"",""parameters"":[{""name"":""data"",""type"":""ByteArray""}],""returntype"":""InteropInterface"",""offset"":7,""safe"":true},{""name"":""bls12381Equal"",""parameters"":[{""name"":""x"",""type"":""InteropInterface""},{""name"":""y"",""type"":""InteropInterface""}],""returntype"":""Boolean"",""offset"":14,""safe"":true},{""name"":""bls12381Mul"",""parameters"":[{""name"":""x"",""type"":""InteropInterface""},{""name"":""mul"",""type"":""ByteArray""},{""name"":""neg"",""type"":""Boolean""}],""returntype"":""InteropInterface"",""offset"":21,""safe"":true},{""name"":""bls12381Pairing"",""parameters"":[{""name"":""g1"",""type"":""InteropInterface""},{""name"":""g2"",""type"":""InteropInterface""}],""returntype"":""InteropInterface"",""offset"":28,""safe"":true},{""name"":""bls12381Serialize"",""parameters"":[{""name"":""g"",""type"":""InteropInterface""}],""returntype"":""ByteArray"",""offset"":35,""safe"":true},{""name"":""keccak256"",""parameters"":[{""name"":""data"",""type"":""ByteArray""}],""returntype"":""ByteArray"",""offset"":42,""safe"":true},{""name"":""murmur32"",""parameters"":[{""name"":""data"",""type"":""ByteArray""},{""name"":""seed"",""type"":""Integer""}],""returntype"":""ByteArray"",""offset"":49,""safe"":true},{""name"":""ripemd160"",""parameters"":[{""name"":""data"",""type"":""ByteArray""}],""returntype"":""ByteArray"",""offset"":56,""safe"":true},{""name"":""sha256"",""parameters"":[{""name"":""data"",""type"":""ByteArray""}],""returntype"":""ByteArray"",""offset"":63,""safe"":true},{""name"":""verifyWithECDsa"",""parameters"":[{""name"":""message"",""type"":""ByteArray""},{""name"":""pubkey"",""type"":""ByteArray""},{""name"":""signature"",""type"":""ByteArray""},{""name"":""curve"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":70,""safe"":true}],""events"":[]},""permissions"":[{""contract"":""*"",""methods"":""*""}],""trusts"":[],""extra"":null}");
11+
12+
#endregion
13+
814
#region Safe methods
915

1016
/// <summary>
@@ -43,29 +49,35 @@ public abstract class CryptoLib : SmartContract
4349
[DisplayName("bls12381Serialize")]
4450
public abstract byte[]? Bls12381Serialize(object? g);
4551

52+
/// <summary>
53+
/// Safe method
54+
/// </summary>
55+
[DisplayName("keccak256")]
56+
public abstract byte[]? Keccak256(byte[]? data);
57+
4658
/// <summary>
4759
/// Safe method
4860
/// </summary>
4961
[DisplayName("murmur32")]
50-
public abstract byte[] Murmur32(byte[]? data, BigInteger? seed);
62+
public abstract byte[]? Murmur32(byte[]? data, BigInteger? seed);
5163

5264
/// <summary>
5365
/// Safe method
5466
/// </summary>
5567
[DisplayName("ripemd160")]
56-
public abstract byte[] Ripemd160(byte[]? data);
68+
public abstract byte[]? Ripemd160(byte[]? data);
5769

5870
/// <summary>
5971
/// Safe method
6072
/// </summary>
6173
[DisplayName("sha256")]
62-
public abstract byte[] Sha256(byte[]? data);
74+
public abstract byte[]? Sha256(byte[]? data);
6375

6476
/// <summary>
6577
/// Safe method
6678
/// </summary>
6779
[DisplayName("verifyWithECDsa")]
68-
public abstract bool VerifyWithECDsa(byte[]? message, byte[]? pubkey, byte[]? signature, BigInteger? curve);
80+
public abstract bool? VerifyWithECDsa(byte[]? message, byte[]? pubkey, byte[]? signature, BigInteger? curve);
6981

7082
#endregion
7183

src/Neo.SmartContract.Testing/Native/GasToken.cs

+13-9
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33

44
namespace Neo.SmartContract.Testing.Native;
55

6-
public abstract class GasToken : SmartContract
6+
public abstract class GasToken : SmartContract, TestingStandards.INep17Standard
77
{
8-
#region Events
8+
#region Compiled data
9+
10+
public static readonly Manifest.ContractManifest Manifest = Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""GasToken"",""groups"":[],""features"":{},""supportedstandards"":[""NEP-17""],""abi"":{""methods"":[{""name"":""balanceOf"",""parameters"":[{""name"":""account"",""type"":""Hash160""}],""returntype"":""Integer"",""offset"":0,""safe"":true},{""name"":""decimals"",""parameters"":[],""returntype"":""Integer"",""offset"":7,""safe"":true},{""name"":""symbol"",""parameters"":[],""returntype"":""String"",""offset"":14,""safe"":true},{""name"":""totalSupply"",""parameters"":[],""returntype"":""Integer"",""offset"":21,""safe"":true},{""name"":""transfer"",""parameters"":[{""name"":""from"",""type"":""Hash160""},{""name"":""to"",""type"":""Hash160""},{""name"":""amount"",""type"":""Integer""},{""name"":""data"",""type"":""Any""}],""returntype"":""Boolean"",""offset"":28,""safe"":false}],""events"":[]},""permissions"":[{""contract"":""*"",""methods"":""*""}],""trusts"":[],""extra"":null}");
911

10-
public delegate void delTransfer(UInt160? from, UInt160? to, BigInteger? amount);
12+
#endregion
13+
14+
#region Events
1115

1216
[DisplayName("Transfer")]
13-
public event delTransfer? OnTransfer;
17+
public event TestingStandards.INep17Standard.delTransfer? OnTransfer;
1418

1519
#endregion
1620

@@ -19,17 +23,17 @@ public abstract class GasToken : SmartContract
1923
/// <summary>
2024
/// Safe property
2125
/// </summary>
22-
public abstract BigInteger Decimals { [DisplayName("decimals")] get; }
26+
public abstract BigInteger? Decimals { [DisplayName("decimals")] get; }
2327

2428
/// <summary>
2529
/// Safe property
2630
/// </summary>
27-
public abstract string Symbol { [DisplayName("symbol")] get; }
31+
public abstract string? Symbol { [DisplayName("symbol")] get; }
2832

2933
/// <summary>
3034
/// Safe property
3135
/// </summary>
32-
public abstract BigInteger TotalSupply { [DisplayName("totalSupply")] get; }
36+
public abstract BigInteger? TotalSupply { [DisplayName("totalSupply")] get; }
3337

3438
#endregion
3539

@@ -39,7 +43,7 @@ public abstract class GasToken : SmartContract
3943
/// Safe method
4044
/// </summary>
4145
[DisplayName("balanceOf")]
42-
public abstract BigInteger BalanceOf(UInt160? account);
46+
public abstract BigInteger? BalanceOf(UInt160? account);
4347

4448
#endregion
4549

@@ -49,7 +53,7 @@ public abstract class GasToken : SmartContract
4953
/// Unsafe method
5054
/// </summary>
5155
[DisplayName("transfer")]
52-
public abstract bool Transfer(UInt160? from, UInt160? to, BigInteger? amount, object? data = null);
56+
public abstract bool? Transfer(UInt160? from, UInt160? to, BigInteger? amount, object? data = null);
5357

5458
#endregion
5559

src/Neo.SmartContract.Testing/Native/LedgerContract.cs

+9-3
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,23 @@ namespace Neo.SmartContract.Testing.Native;
88

99
public abstract class LedgerContract : SmartContract
1010
{
11+
#region Compiled data
12+
13+
public static readonly Manifest.ContractManifest Manifest = Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""LedgerContract"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""currentHash"",""parameters"":[],""returntype"":""Hash256"",""offset"":0,""safe"":true},{""name"":""currentIndex"",""parameters"":[],""returntype"":""Integer"",""offset"":7,""safe"":true},{""name"":""getBlock"",""parameters"":[{""name"":""indexOrHash"",""type"":""ByteArray""}],""returntype"":""Array"",""offset"":14,""safe"":true},{""name"":""getTransaction"",""parameters"":[{""name"":""hash"",""type"":""Hash256""}],""returntype"":""Array"",""offset"":21,""safe"":true},{""name"":""getTransactionFromBlock"",""parameters"":[{""name"":""blockIndexOrHash"",""type"":""ByteArray""},{""name"":""txIndex"",""type"":""Integer""}],""returntype"":""Array"",""offset"":28,""safe"":true},{""name"":""getTransactionHeight"",""parameters"":[{""name"":""hash"",""type"":""Hash256""}],""returntype"":""Integer"",""offset"":35,""safe"":true},{""name"":""getTransactionSigners"",""parameters"":[{""name"":""hash"",""type"":""Hash256""}],""returntype"":""Array"",""offset"":42,""safe"":true},{""name"":""getTransactionVMState"",""parameters"":[{""name"":""hash"",""type"":""Hash256""}],""returntype"":""Integer"",""offset"":49,""safe"":true}],""events"":[]},""permissions"":[{""contract"":""*"",""methods"":""*""}],""trusts"":[],""extra"":null}");
14+
15+
#endregion
16+
1117
#region Properties
1218

1319
/// <summary>
1420
/// Safe property
1521
/// </summary>
16-
public abstract UInt256 CurrentHash { [DisplayName("currentHash")] get; }
22+
public abstract UInt256? CurrentHash { [DisplayName("currentHash")] get; }
1723

1824
/// <summary>
1925
/// Safe property
2026
/// </summary>
21-
public abstract BigInteger CurrentIndex { [DisplayName("currentIndex")] get; }
27+
public abstract BigInteger? CurrentIndex { [DisplayName("currentIndex")] get; }
2228

2329
#endregion
2430

@@ -58,7 +64,7 @@ public abstract class LedgerContract : SmartContract
5864
/// Safe method
5965
/// </summary>
6066
[DisplayName("getTransactionVMState")]
61-
public abstract VMState GetTransactionVMState(UInt256? hash);
67+
public abstract VMState? GetTransactionVMState(UInt256? hash);
6268

6369
#endregion
6470

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using Neo.Cryptography.ECC;
2+
using Neo.SmartContract.Testing.Attributes;
3+
using System.Numerics;
4+
5+
namespace Neo.SmartContract.Testing.Native;
6+
7+
public abstract partial class NeoToken : SmartContract
8+
{
9+
public class Candidate
10+
{
11+
/// <summary>
12+
/// Public key
13+
/// </summary>
14+
[FieldOrder(0)]
15+
public ECPoint? PublicKey { get; set; }
16+
17+
/// <summary>
18+
/// Votes
19+
/// </summary>
20+
[FieldOrder(1)]
21+
public BigInteger Votes { get; set; }
22+
}
23+
}

0 commit comments

Comments
 (0)