Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion neo
2 changes: 2 additions & 0 deletions src/Neo.SmartContract.Framework/Native/CryptoLib.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public static partial class CryptoLib

public static extern ByteString Ripemd160(ByteString value);

public static extern ByteString keccak256(ByteString value);

public static extern ByteString Murmur32(ByteString value, uint seed);

public static extern bool VerifyWithECDsa(ByteString message, ECPoint pubkey, ByteString signature, NamedCurve curve);
Expand Down
33 changes: 21 additions & 12 deletions src/Neo.SmartContract.Testing/Native/ContractManagement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,42 @@ namespace Neo.SmartContract.Testing.Native;

public abstract class ContractManagement : SmartContract
{
#region Compiled data

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}");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need another way to replace a hardcode manifest. can be fixed later.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's better to have the nef and manifest inside the artifacts, in case of native contracts can be generated calling neo for avoid this issue, but it can be not synchronized with the methods


#endregion

#region Events

public delegate void delDeploy(UInt160 Hash);
public delegate void delDeploy(UInt160? Hash);

[DisplayName("Deploy")]
public event delDeploy? OnDeploy;
public delegate void delDestroy(UInt160 Hash);

public delegate void delDestroy(UInt160? Hash);

[DisplayName("Destroy")]
public event delDestroy? OnDestroy;
public delegate void delUpdate(UInt160 Hash);

public delegate void delUpdate(UInt160? Hash);

[DisplayName("Update")]
public event delUpdate? OnUpdate;

#endregion

#region Properties

/// <summary>
/// Safe property
/// </summary>
public abstract IIterator ContractHashes { [DisplayName("getContractHashes")] get; }
public abstract IIterator? ContractHashes { [DisplayName("getContractHashes")] get; }

/// <summary>
/// Safe property
/// </summary>
public abstract BigInteger MinimumDeploymentFee { [DisplayName("getMinimumDeploymentFee")] get; [DisplayName("setMinimumDeploymentFee")] set; }
public abstract BigInteger? MinimumDeploymentFee { [DisplayName("getMinimumDeploymentFee")] get; [DisplayName("setMinimumDeploymentFee")] set; }

#endregion

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

/// <summary>
/// Safe method
/// </summary>
[DisplayName("getContractById")]
public abstract ContractState? GetContractById(BigInteger id);
public abstract ContractState? GetContractById(BigInteger? id);

/// <summary>
/// Safe method
/// </summary>
[DisplayName("hasMethod")]
public abstract bool HasMethod(UInt160 hash, string method, BigInteger pcount);
public abstract bool? HasMethod(UInt160? hash, string? method, BigInteger? pcount);

#endregion

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

/// <summary>
/// Unsafe method
/// </summary>
[DisplayName("deploy")]
public abstract ContractState Deploy(byte[] nefFile, byte[] manifest, object? data = null);
public abstract ContractState? Deploy(byte[]? nefFile, byte[]? manifest, object? data = null);

/// <summary>
/// Unsafe method
Expand All @@ -82,13 +91,13 @@ public abstract class ContractManagement : SmartContract
/// Unsafe method
/// </summary>
[DisplayName("update")]
public abstract void Update(byte[] nefFile, byte[] manifest);
public abstract void Update(byte[]? nefFile, byte[]? manifest);

/// <summary>
/// Unsafe method
/// </summary>
[DisplayName("update")]
public abstract void Update(byte[] nefFile, byte[] manifest, object? data = null);
public abstract void Update(byte[]? nefFile, byte[]? manifest, object? data = null);

#endregion

Expand Down
20 changes: 16 additions & 4 deletions src/Neo.SmartContract.Testing/Native/CryptoLib.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ namespace Neo.SmartContract.Testing.Native;

public abstract class CryptoLib : SmartContract
{
#region Compiled data

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}");

#endregion

#region Safe methods

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

/// <summary>
/// Safe method
/// </summary>
[DisplayName("keccak256")]
public abstract byte[]? Keccak256(byte[]? data);

/// <summary>
/// Safe method
/// </summary>
[DisplayName("murmur32")]
public abstract byte[] Murmur32(byte[]? data, BigInteger? seed);
public abstract byte[]? Murmur32(byte[]? data, BigInteger? seed);

/// <summary>
/// Safe method
/// </summary>
[DisplayName("ripemd160")]
public abstract byte[] Ripemd160(byte[]? data);
public abstract byte[]? Ripemd160(byte[]? data);

/// <summary>
/// Safe method
/// </summary>
[DisplayName("sha256")]
public abstract byte[] Sha256(byte[]? data);
public abstract byte[]? Sha256(byte[]? data);

/// <summary>
/// Safe method
/// </summary>
[DisplayName("verifyWithECDsa")]
public abstract bool VerifyWithECDsa(byte[]? message, byte[]? pubkey, byte[]? signature, BigInteger? curve);
public abstract bool? VerifyWithECDsa(byte[]? message, byte[]? pubkey, byte[]? signature, BigInteger? curve);

#endregion

Expand Down
22 changes: 13 additions & 9 deletions src/Neo.SmartContract.Testing/Native/GasToken.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@

namespace Neo.SmartContract.Testing.Native;

public abstract class GasToken : SmartContract
public abstract class GasToken : SmartContract, TestingStandards.INep17Standard
{
#region Events
#region Compiled data

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}");

public delegate void delTransfer(UInt160? from, UInt160? to, BigInteger? amount);
#endregion

#region Events

[DisplayName("Transfer")]
public event delTransfer? OnTransfer;
public event TestingStandards.INep17Standard.delTransfer? OnTransfer;

#endregion

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

/// <summary>
/// Safe property
/// </summary>
public abstract string Symbol { [DisplayName("symbol")] get; }
public abstract string? Symbol { [DisplayName("symbol")] get; }

/// <summary>
/// Safe property
/// </summary>
public abstract BigInteger TotalSupply { [DisplayName("totalSupply")] get; }
public abstract BigInteger? TotalSupply { [DisplayName("totalSupply")] get; }

#endregion

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

#endregion

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

#endregion

Expand Down
12 changes: 9 additions & 3 deletions src/Neo.SmartContract.Testing/Native/LedgerContract.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,23 @@ namespace Neo.SmartContract.Testing.Native;

public abstract class LedgerContract : SmartContract
{
#region Compiled data

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}");

#endregion

#region Properties

/// <summary>
/// Safe property
/// </summary>
public abstract UInt256 CurrentHash { [DisplayName("currentHash")] get; }
public abstract UInt256? CurrentHash { [DisplayName("currentHash")] get; }

/// <summary>
/// Safe property
/// </summary>
public abstract BigInteger CurrentIndex { [DisplayName("currentIndex")] get; }
public abstract BigInteger? CurrentIndex { [DisplayName("currentIndex")] get; }

#endregion

Expand Down Expand Up @@ -58,7 +64,7 @@ public abstract class LedgerContract : SmartContract
/// Safe method
/// </summary>
[DisplayName("getTransactionVMState")]
public abstract VMState GetTransactionVMState(UInt256? hash);
public abstract VMState? GetTransactionVMState(UInt256? hash);

#endregion

Expand Down
23 changes: 23 additions & 0 deletions src/Neo.SmartContract.Testing/Native/NeoToken.Models.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using Neo.Cryptography.ECC;
using Neo.SmartContract.Testing.Attributes;
using System.Numerics;

namespace Neo.SmartContract.Testing.Native;

public abstract partial class NeoToken : SmartContract
{
public class Candidate
{
/// <summary>
/// Public key
/// </summary>
[FieldOrder(0)]
public ECPoint? PublicKey { get; set; }

/// <summary>
/// Votes
/// </summary>
[FieldOrder(1)]
public BigInteger Votes { get; set; }
}
}
Loading