Skip to content

Commit

Permalink
Merge branch 'master' into fix/neo-cli
Browse files Browse the repository at this point in the history
  • Loading branch information
cschuchardt88 authored Sep 29, 2024
2 parents b0175fd + 33d0913 commit 7fb64a6
Show file tree
Hide file tree
Showing 77 changed files with 2,024 additions and 373 deletions.
5 changes: 5 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ indent_size = 2
end_of_line = lf
indent_size = 2

# YAML files
[*.yml]
end_of_line = lf
indent_size = 2

# Dotnet code style settings:
[*.{cs,vb}]
# Member can be made 'readonly'
Expand Down
91 changes: 33 additions & 58 deletions .github/workflows/pkgs-delete.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,78 +61,53 @@ jobs:
shell: python

delete-git-pkgs:
name: Delete Old Nuget Packages
delete-git-docker-pkgs:
name: Delete Old Docker Images
runs-on: ubuntu-latest

steps:
- name: Delete Neo.Cryptography.BLS12_381 Package
uses: actions/delete-package-versions@v4
with:
package-name: Neo.Cryptography.BLS12_381
package-type: nuget
min-versions-to-keep: 3
delete-only-pre-release-versions: "true"
token: "${{ secrets.GITHUB_TOKEN }}"

- name: Delete Neo.VM Package
uses: actions/delete-package-versions@v4
with:
package-name: Neo.VM
package-type: nuget
min-versions-to-keep: 3
delete-only-pre-release-versions: "true"
token: "${{ secrets.GITHUB_TOKEN }}"

- name: Delete Neo.Json Package
uses: actions/delete-package-versions@v4
with:
package-name: Neo.Json
package-type: nuget
min-versions-to-keep: 3
delete-only-pre-release-versions: "true"
token: "${{ secrets.GITHUB_TOKEN }}"

- name: Delete Neo.IO Package
uses: actions/delete-package-versions@v4
with:
package-name: Neo.IO
package-type: nuget
min-versions-to-keep: 3
delete-only-pre-release-versions: "true"
token: "${{ secrets.GITHUB_TOKEN }}"

- name: Delete Neo Package (nuget)
uses: actions/delete-package-versions@v4
with:
package-name: Neo
package-type: nuget
min-versions-to-keep: 3
delete-only-pre-release-versions: "true"
token: "${{ secrets.GITHUB_TOKEN }}"

- name: Delete Neo Package (docker)
uses: actions/delete-package-versions@v4
continue-on-error: true
with:
package-name: Neo
package-type: docker
min-versions-to-keep: 1
delete-only-pre-release-versions: "true"
token: "${{ secrets.GITHUB_TOKEN }}"

- name: Delete Neo.ConsoleService Package
uses: actions/delete-package-versions@v4
with:
package-name: Neo.ConsoleService
package-type: nuget
min-versions-to-keep: 3
delete-only-pre-release-versions: "true"
token: "${{ secrets.GITHUB_TOKEN }}"
delete-git-nuget-pkgs:
name: Delete Old Nuget Packages
strategy:
matrix:
pkgs:
- "Neo.Plugins.StatesDumper"
- "Neo.Plugins.StateService"
- "Neo.Plugins.Storage.LevelDBStore"
- "Neo.Plugins.Storage.RocksDBStore"
- "Neo.Plugins.StorageDumper"
- "Neo.Plugins.TokensTracker"
- "Neo.Wallets.SQLite"
- "Neo.Consensus.DBFT"
- "Neo.ConsoleService"
- "Neo.Cryptography.MPT"
- "Neo.Extensions"
- "Neo.Network.RPC.RpcClient"
- "Neo.Plugins.ApplicationLogs"
- "Neo.Plugins.OracleService"
- "Neo.Plugins.RpcServer"
- "Neo.Cryptography.BLS12_381"
- "Neo.VM"
- "Neo.Json"
- "Neo.IO"
- "Neo"
runs-on: ubuntu-latest

- name: Delete Neo.Extensions Package
steps:
- name: Delete ${{ matrix.pkgs }} Package
uses: actions/delete-package-versions@v4
continue-on-error: true
with:
package-name: Neo.Extensions
package-name: ${{ matrix.pkgs }}
package-type: nuget
min-versions-to-keep: 3
delete-only-pre-release-versions: "true"
Expand Down
11 changes: 11 additions & 0 deletions src/Neo.Extensions/StringExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,16 @@ public static byte[] HexToBytes(this string value)
result[i] = byte.Parse(value.Substring(i * 2, 2), NumberStyles.AllowHexSpecifier);
return result;
}

/// <summary>
/// Gets the size of the specified <see cref="string"/> encoded in variable-length encoding.
/// </summary>
/// <param name="value">The specified <see cref="string"/>.</param>
/// <returns>The size of the <see cref="string"/>.</returns>
public static int GetVarSize(this string value)
{
var size = Utility.StrictUTF8.GetByteCount(value);
return UnsafeData.GetVarSize(size) + size;
}
}
}
31 changes: 31 additions & 0 deletions src/Neo.Extensions/UnsafeData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright (C) 2015-2024 The Neo Project.
//
// UnsafeData.cs file belongs to the neo project and is free
// software distributed under the MIT software license, see the
// accompanying file LICENSE in the main directory of the
// repository or http://www.opensource.org/licenses/mit-license.php
// for more details.
//
// Redistribution and use in source and binary forms with or without
// modifications are permitted.

namespace Neo.Extensions
{
public static class UnsafeData
{
/// <summary>
/// Gets the size of variable-length of the data.
/// </summary>
/// <param name="value">The length of the data.</param>
/// <returns>The size of variable-length of the data.</returns>
public static int GetVarSize(int value)
{
if (value < 0xFD)
return sizeof(byte);
else if (value <= 0xFFFF)
return sizeof(byte) + sizeof(ushort);
else
return sizeof(byte) + sizeof(uint);
}
}
}
90 changes: 90 additions & 0 deletions src/Neo/Builders/AndConditionBuilder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
// Copyright (C) 2015-2024 The Neo Project.
//
// AndConditionBuilder.cs file belongs to the neo project and is free
// software distributed under the MIT software license, see the
// accompanying file LICENSE in the main directory of the
// repository or http://www.opensource.org/licenses/mit-license.php
// for more details.
//
// Redistribution and use in source and binary forms with or without
// modifications are permitted.

using Neo.Cryptography.ECC;
using Neo.Network.P2P.Payloads.Conditions;
using System;

namespace Neo.Builders
{
public sealed class AndConditionBuilder
{
private readonly AndCondition _condition = new() { Expressions = [] };

private AndConditionBuilder() { }

public static AndConditionBuilder CreateEmpty()
{
return new AndConditionBuilder();
}

public AndConditionBuilder And(Action<AndConditionBuilder> config)
{
var acb = new AndConditionBuilder();
config(acb);

_condition.Expressions = [.. _condition.Expressions, acb.Build()];

return this;
}

public AndConditionBuilder Or(Action<OrConditionBuilder> config)
{
var ocb = OrConditionBuilder.CreateEmpty();
config(ocb);

_condition.Expressions = [.. _condition.Expressions, ocb.Build()];

return this;
}

public AndConditionBuilder Boolean(bool expression)
{
_condition.Expressions = [.. _condition.Expressions, new BooleanCondition { Expression = expression }];
return this;
}

public AndConditionBuilder CalledByContract(UInt160 hash)
{
_condition.Expressions = [.. _condition.Expressions, new CalledByContractCondition { Hash = hash }];
return this;
}

public AndConditionBuilder CalledByEntry()
{
_condition.Expressions = [.. _condition.Expressions, new CalledByEntryCondition()];
return this;
}

public AndConditionBuilder CalledByGroup(ECPoint publicKey)
{
_condition.Expressions = [.. _condition.Expressions, new CalledByGroupCondition { Group = publicKey }];
return this;
}

public AndConditionBuilder Group(ECPoint publicKey)
{
_condition.Expressions = [.. _condition.Expressions, new GroupCondition() { Group = publicKey }];
return this;
}

public AndConditionBuilder ScriptHash(UInt160 scriptHash)
{
_condition.Expressions = [.. _condition.Expressions, new ScriptHashCondition() { Hash = scriptHash }];
return this;
}

public AndCondition Build()
{
return _condition;
}
}
}
90 changes: 90 additions & 0 deletions src/Neo/Builders/OrConditionBuilder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
// Copyright (C) 2015-2024 The Neo Project.
//
// OrConditionBuilder.cs file belongs to the neo project and is free
// software distributed under the MIT software license, see the
// accompanying file LICENSE in the main directory of the
// repository or http://www.opensource.org/licenses/mit-license.php
// for more details.
//
// Redistribution and use in source and binary forms with or without
// modifications are permitted.

using Neo.Cryptography.ECC;
using Neo.Network.P2P.Payloads.Conditions;
using System;

namespace Neo.Builders
{
public sealed class OrConditionBuilder
{
private readonly OrCondition _condition = new() { Expressions = [] };

private OrConditionBuilder() { }

public static OrConditionBuilder CreateEmpty()
{
return new OrConditionBuilder();
}

public OrConditionBuilder And(Action<AndConditionBuilder> config)
{
var acb = AndConditionBuilder.CreateEmpty();
config(acb);

_condition.Expressions = [.. _condition.Expressions, acb.Build()];

return this;
}

public OrConditionBuilder Or(Action<OrConditionBuilder> config)
{
var acb = new OrConditionBuilder();
config(acb);

_condition.Expressions = [.. _condition.Expressions, acb.Build()];

return this;
}

public OrConditionBuilder Boolean(bool expression)
{
_condition.Expressions = [.. _condition.Expressions, new BooleanCondition { Expression = expression }];
return this;
}

public OrConditionBuilder CalledByContract(UInt160 hash)
{
_condition.Expressions = [.. _condition.Expressions, new CalledByContractCondition { Hash = hash }];
return this;
}

public OrConditionBuilder CalledByEntry()
{
_condition.Expressions = [.. _condition.Expressions, new CalledByEntryCondition()];
return this;
}

public OrConditionBuilder CalledByGroup(ECPoint publicKey)
{
_condition.Expressions = [.. _condition.Expressions, new CalledByGroupCondition { Group = publicKey }];
return this;
}

public OrConditionBuilder Group(ECPoint publicKey)
{
_condition.Expressions = [.. _condition.Expressions, new GroupCondition() { Group = publicKey }];
return this;
}

public OrConditionBuilder ScriptHash(UInt160 scriptHash)
{
_condition.Expressions = [.. _condition.Expressions, new ScriptHashCondition() { Hash = scriptHash }];
return this;
}

public OrCondition Build()
{
return _condition;
}
}
}
Loading

0 comments on commit 7fb64a6

Please sign in to comment.