Skip to content

Commit

Permalink
Merge branch 'neo-project:master' into fix.overflow-in-substr
Browse files Browse the repository at this point in the history
  • Loading branch information
nan01ab authored Sep 27, 2024
2 parents 2494812 + 6a4ea1f commit 20ec1e1
Show file tree
Hide file tree
Showing 16 changed files with 1,509 additions and 58 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
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;
}
}
}
73 changes: 73 additions & 0 deletions src/Neo/Builders/SignerBuilder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Copyright (C) 2015-2024 The Neo Project.
//
// SignerBuilder.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;
using System;

namespace Neo.Builders
{
public sealed class SignerBuilder
{
private readonly Signer _signer = new Signer()
{
Account = UInt160.Zero,
AllowedContracts = [],
AllowedGroups = [],
Rules = [],
Scopes = WitnessScope.None,
};

private SignerBuilder() { }

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

public SignerBuilder Account(UInt160 scriptHash)
{
_signer.Account = scriptHash;
return this;
}

public SignerBuilder AllowContract(UInt160 contractHash)
{
_signer.AllowedContracts = [.. _signer.AllowedContracts, contractHash];
return this;
}

public SignerBuilder AllowGroup(ECPoint publicKey)
{
_signer.AllowedGroups = [.. _signer.AllowedGroups, publicKey];
return this;
}

public SignerBuilder AddWitnessScope(WitnessScope scope)
{
_signer.Scopes |= scope;
return this;
}

public SignerBuilder AddWitnessRule(WitnessRuleAction action, Action<WitnessRuleBuilder> config)
{
var rb = WitnessRuleBuilder.Create(action);
config(rb);
_signer.Rules = [.. _signer.Rules, rb.Build()];
return this;
}

public Signer Build()
{
return _signer;
}
}
}
Loading

0 comments on commit 20ec1e1

Please sign in to comment.