diff --git a/Circles.Index.CirclesV1/DatabaseSchema.cs b/Circles.Index.CirclesV1/DatabaseSchema.cs index bc0c5f3..7dbc5f5 100644 --- a/Circles.Index.CirclesV1/DatabaseSchema.cs +++ b/Circles.Index.CirclesV1/DatabaseSchema.cs @@ -35,6 +35,80 @@ public class DatabaseSchema : IDatabaseSchema new("amount", ValueTypes.BigInt, false) ]); + public static readonly EventSchema TrustRelations = new("V_CrcV1", "TrustRelations", new byte[32], [ + new("blockNumber", ValueTypes.Int, true), + new("timestamp", ValueTypes.Int, true), + new("transactionIndex", ValueTypes.Int, true), + new("logIndex", ValueTypes.Int, true), + new("batchIndex", ValueTypes.Int, true, true), + new("transactionHash", ValueTypes.String, true), + new("user", ValueTypes.Address, true), + new("canSendTo", ValueTypes.Address, true), + new("limit", ValueTypes.Int, false), + ]) + { + SqlMigrationItem = new SqlMigrationItem(@" + create or replace view ""V_CrcV1_TrustRelations"" as + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + ""user"", + ""canSendTo"", + ""limit"" + from ( + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + ""user"", + ""canSendTo"", + ""limit"", + row_number() over (partition by ""user"", ""canSendTo"" order by ""blockNumber"" desc, ""transactionIndex"" desc, ""logIndex"" desc) as ""rn"" + from ""CrcV1_Trust"" + ) t + where ""rn"" = 1 + and ""limit"" > 0 + order by ""blockNumber"" desc, ""transactionIndex"" desc, ""logIndex"" desc; + ") + }; + + public static readonly EventSchema Avatars = new("V_CrcV1", "Avatars", new byte[32], [ + new("blockNumber", ValueTypes.Int, true), + new("timestamp", ValueTypes.Int, true), + new("transactionIndex", ValueTypes.Int, true), + new("logIndex", ValueTypes.Int, true), + new("transactionHash", ValueTypes.String, true), + new("user", ValueTypes.Address, true), + new("token", ValueTypes.Address, true), + ]) + { + SqlMigrationItem = new SqlMigrationItem(@" + create or replace view ""V_CrcV1_Avatars"" as + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + 'human' as ""type"", + ""user"", + ""token"" + from ""CrcV1_Signup"" + union all + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + 'organization' as ""type"", + ""organization"", + null as ""token"" + from ""CrcV1_OrganizationSignup""; + ") + }; + public IDictionary<(string Namespace, string Table), EventSchema> Tables { get; } = new Dictionary<(string Namespace, string Table), EventSchema> { @@ -57,6 +131,14 @@ public class DatabaseSchema : IDatabaseSchema { ("CrcV1", "Transfer"), Transfer + }, + { + ("V_CrcV1", "TrustRelations"), + TrustRelations + }, + { + ("V_CrcV1", "Avatars"), + Avatars } }; diff --git a/Circles.Index.CirclesV2/DatabaseSchema.cs b/Circles.Index.CirclesV2/DatabaseSchema.cs index b172e25..67a76e5 100644 --- a/Circles.Index.CirclesV2/DatabaseSchema.cs +++ b/Circles.Index.CirclesV2/DatabaseSchema.cs @@ -5,7 +5,7 @@ namespace Circles.Index.CirclesV2; /* - + TODO: It looks like the new Hub doesn't have an equivalent to the 'HubTransfer' event hub/ Hub.sol: event PersonalMint(address indexed human, uint256 amount, uint256 startPeriod, uint256 endPeriod); @@ -22,7 +22,7 @@ namespace Circles.Index.CirclesV2; Manual events: event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values); - TODO: + TODO: Add the 'Lift' contract events lift/ DemurrageCircles.sol: event DepositDemurraged(address indexed account, uint256 amount, uint256 inflationaryAmount); diff --git a/Circles.Index.CirclesViews/Circles.Index.CirclesViews.csproj b/Circles.Index.CirclesViews/Circles.Index.CirclesViews.csproj new file mode 100644 index 0000000..69158cf --- /dev/null +++ b/Circles.Index.CirclesViews/Circles.Index.CirclesViews.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/Circles.Index.CirclesViews/DatabaseSchema.cs b/Circles.Index.CirclesViews/DatabaseSchema.cs new file mode 100644 index 0000000..5e250ce --- /dev/null +++ b/Circles.Index.CirclesViews/DatabaseSchema.cs @@ -0,0 +1,111 @@ +using Circles.Index.Common; + +namespace Circles.Index.CirclesViews; + +public class DatabaseSchema : IDatabaseSchema +{ + public ISchemaPropertyMap SchemaPropertyMap { get; } = new SchemaPropertyMap(); + + public IEventDtoTableMap EventDtoTableMap { get; } = new EventDtoTableMap(); + + public static readonly EventSchema TrustRelations = new("V_Crc", "TrustRelations", new byte[32], [ + new("blockNumber", ValueTypes.Int, true), + new("timestamp", ValueTypes.Int, true), + new("transactionIndex", ValueTypes.Int, true), + new("logIndex", ValueTypes.Int, true), + new("transactionHash", ValueTypes.String, true), + new("version", ValueTypes.Int, false), + new("trustee", ValueTypes.String, false), + new("truster", ValueTypes.String, false), + new("expiryTime", ValueTypes.Int, false), + new("limit", ValueTypes.Int, false) + ]) + { + SqlMigrationItem = new SqlMigrationItem(@" + create or replace view ""V_Crc_TrustRelations"" as + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + 2 as ""version"", + ""trustee"", + ""truster"", + ""expiryTime"", + null as ""limit"" + from ""V_CrcV2_TrustRelations"" + union all + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + 1 as ""version"", + ""user"", + ""canSendTo"", + null as ""expiryTime"", + ""limit"" + from ""V_CrcV1_TrustRelations""; + ") + }; + + public static readonly EventSchema Avatars = new("V_Crc", "Avatars", new byte[32], [ + new("blockNumber", ValueTypes.Int, true), + new("timestamp", ValueTypes.Int, true), + new("transactionIndex", ValueTypes.Int, true), + new("logIndex", ValueTypes.Int, true), + new("transactionHash", ValueTypes.String, true), + new("version", ValueTypes.Int, false), + new("type", ValueTypes.String, false), + new("invitedBy", ValueTypes.String, false), + new("avatar", ValueTypes.String, false), + new("tokenId", ValueTypes.String, false), + new("name", ValueTypes.String, false), + new("cidV0Digest", ValueTypes.Bytes, false), + ]) + { + SqlMigrationItem = new SqlMigrationItem(@" + create or replace view ""V_Crc_Avatars"" as + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + 2 as ""version"", + ""type"", + ""invitedBy"", + ""avatar"", + ""tokenId"", + ""name"", + ""cidV0Digest"" + from ""V_CrcV2_Avatars"" + union all + select ""blockNumber"", + ""timestamp"", + ""transactionIndex"", + ""logIndex"", + ""transactionHash"", + 1 as ""version"", + ""type"", + null as ""invitedBy"", + ""user"" as ""avatar"", + ""token"" as ""tokenId"", + null as ""name"", + null as ""cidV0Digest"" + from ""V_CrcV1_Avatars""; + ") + }; + + public IDictionary<(string Namespace, string Table), EventSchema> Tables { get; } = + new Dictionary<(string Namespace, string Table), EventSchema> + { + { + ("V_Crc", "Avatars"), + Avatars + }, + { + ("V_Crc", "TrustRelations"), + TrustRelations + } + }; +} \ No newline at end of file diff --git a/Circles.Index.Postgres/PostgresDb.cs b/Circles.Index.Postgres/PostgresDb.cs index fd4cb76..87b5778 100644 --- a/Circles.Index.Postgres/PostgresDb.cs +++ b/Circles.Index.Postgres/PostgresDb.cs @@ -305,15 +305,16 @@ public DatabaseQueryResult Select(ParameterizedSql select) { if (resultSchema[i].NpgsqlDbType == NpgsqlDbType.Numeric) { - row[i] = reader.GetFieldValue(i); + row[i] = reader.GetFieldValue(i); } else { row[i] = reader.GetValue(i); - if (row[i] is DBNull) - { - row[i] = null; - } + } + + if (row[i] is DBNull) + { + row[i] = null; } } diff --git a/Circles.Index/Circles.Index.csproj b/Circles.Index/Circles.Index.csproj index 81359a5..6791ea8 100644 --- a/Circles.Index/Circles.Index.csproj +++ b/Circles.Index/Circles.Index.csproj @@ -28,6 +28,7 @@ + diff --git a/Circles.Index/Plugin.cs b/Circles.Index/Plugin.cs index 61e43d2..0cdfc1d 100644 --- a/Circles.Index/Plugin.cs +++ b/Circles.Index/Plugin.cs @@ -32,7 +32,8 @@ public async Task Init(INethermindApi nethermindApi) IDatabaseSchema v1 = new CirclesV1.DatabaseSchema(); IDatabaseSchema v2 = new CirclesV2.DatabaseSchema(); IDatabaseSchema v2NameRegistry = new CirclesV2.NameRegistry.DatabaseSchema(); - IDatabaseSchema databaseSchema = new CompositeDatabaseSchema([common, v1, v2, v2NameRegistry]); + IDatabaseSchema circlesViews = new CirclesViews.DatabaseSchema(); + IDatabaseSchema databaseSchema = new CompositeDatabaseSchema([common, v1, v2, v2NameRegistry, circlesViews]); ILogger baseLogger = nethermindApi.LogManager.GetClassLogger(); ILogger pluginLogger = new LoggerWithPrefix($"{Name}: ", baseLogger); diff --git a/Circles.sln b/Circles.sln index c142d84..923e5b6 100644 --- a/Circles.sln +++ b/Circles.sln @@ -39,6 +39,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{B30CB7 add-deploy-script-tp-v2-repo.sh = add-deploy-script-tp-v2-repo.sh v2-example-requests.md = v2-example-requests.md v1-example-requests.md = v1-example-requests.md + general-example-requests.md = general-example-requests.md EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Circles.Index.Postgres", "Circles.Index.Postgres\Circles.Index.Postgres.csproj", "{8ED5FCD0-0995-44E7-9A11-E0EB03BB0832}" @@ -51,6 +52,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Circles.Index.Query", "Circ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Circles.Index.Query.Tests", "Circles.Index.Query.Tests\Circles.Index.Query.Tests.csproj", "{A4BFF176-178E-4C8B-A7C1-DC7240F91E0D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Schemas", "Schemas", "{64189094-62E5-48CA-BD66-1A7B82263BA8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Circles.Index.CirclesViews", "Circles.Index.CirclesViews\Circles.Index.CirclesViews.csproj", "{265A4516-DC59-4D8B-B097-36902108B143}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -93,5 +98,15 @@ Global {A4BFF176-178E-4C8B-A7C1-DC7240F91E0D}.Debug|Any CPU.Build.0 = Debug|Any CPU {A4BFF176-178E-4C8B-A7C1-DC7240F91E0D}.Release|Any CPU.ActiveCfg = Release|Any CPU {A4BFF176-178E-4C8B-A7C1-DC7240F91E0D}.Release|Any CPU.Build.0 = Release|Any CPU + {265A4516-DC59-4D8B-B097-36902108B143}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {265A4516-DC59-4D8B-B097-36902108B143}.Debug|Any CPU.Build.0 = Debug|Any CPU + {265A4516-DC59-4D8B-B097-36902108B143}.Release|Any CPU.ActiveCfg = Release|Any CPU + {265A4516-DC59-4D8B-B097-36902108B143}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2B7D2126-6D6F-4A5B-81A1-3E5F1A9645F6} = {64189094-62E5-48CA-BD66-1A7B82263BA8} + {FF8E96F7-2903-4C0B-A443-19EA8D7FBB67} = {64189094-62E5-48CA-BD66-1A7B82263BA8} + {33D651AB-1C61-4A06-9C02-A144E7342317} = {64189094-62E5-48CA-BD66-1A7B82263BA8} + {265A4516-DC59-4D8B-B097-36902108B143} = {64189094-62E5-48CA-BD66-1A7B82263BA8} EndGlobalSection EndGlobal diff --git a/Readme.md b/Readme.md index 35d9216..9f30ebe 100644 --- a/Readme.md +++ b/Readme.md @@ -7,8 +7,11 @@ query [Circles](https://www.aboutcircles.com/) protocol events. **Query a node** -If you're just looking for a way to query Circles events, you can check out the query examples in -the [v1-example-requests.md](v1-example-requests.md) and [v2-example-requests.md](v2-example-requests.md) files. +If you're just looking for a way to query Circles events, you can check out the query examples: + +* [General examples](general-example-requests.md) +* [Circles v1 examples](v1-example-requests.md) +* [Circles v2 examples](v2-example-requests.md) For a detailed description of the available RPC methods, see the [Circles RPC methods](#circles-rpc-methods) section. @@ -216,7 +219,7 @@ docker compose -f docker-compose.spaceneth.yml up ## Circles RPC methods -The plugin extends the Nethermind JSON-RPC API with additional methods to query Circles events and aggregate values. +The plugin extends the Nethermind JSON-RPC API with additional methods to query Circles events and aggregate values. You can find concrete examples for all rpc-methods in the [v1-example-requests.md](v1-example-requests.md) and [v2-example-requests.md](v2-example-requests.md) files. @@ -282,10 +285,16 @@ Namespaces and tables: * `UpdateMetadataDigest` * `URI` * `CidV0` (predecessor of `URI` and `UpdateMetadataDigest`) +* `V_CrcV1` + * `Avatars` (view combining `Signup` and `OrganizationSignup`) + * `TrustRelations` (view filtered to represent all current `Trust` relations) * `V_CrcV2` - * `Transfers` (view combining `TransferBatch` and `TransferSingle`) * `Avatars` (view combining `RegisterHuman`, `InviteHuman`, `RegisterGroup` and `RegisterOrganization`) * `TrustRelations` (view filtered to represent all current `Trust` relations) + * `Transfers` (view combining `TransferBatch` and `TransferSingle`) +* `V_Crc` + * `Avatars` (view combining `V_CrcV1_Avatars` and `V_CrcV2_Avatars`) + * `TrustRelations` (view combining `V_CrcV1_TrustRelations` and `V_CrcV2_TrustRelations`) #### Available filter types diff --git a/arm64.Dockerfile b/arm64.Dockerfile index 11c95aa..3cfed88 100644 --- a/arm64.Dockerfile +++ b/arm64.Dockerfile @@ -15,6 +15,7 @@ COPY --from=build /circles-nethermind-plugin/Circles.Index.Common.dll /nethermin COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV1.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.NameRegistry.dll /nethermind/plugins +COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesViews.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Rpc.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Query.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Nethermind.Int256.dll /nethermind/plugins diff --git a/general-example-requests.md b/general-example-requests.md new file mode 100644 index 0000000..9d3599f --- /dev/null +++ b/general-example-requests.md @@ -0,0 +1,226 @@ +## General circles RPC examples + +The examples in this file are general Circles RPC methods that can be used to query Circles V1 and V2 data. + +1. [circles_query](#circles_query) +1.1. [Get a list of Circles avatars](#get-a-list-of-circles-users) +1.2. [Get the trust relations between avatars](#get-the-trust-relations-between-avatars) + +### circles_query + +##### Get a list of Circles avatars + +This query returns v1 as well as v2 Circles users. The version of the user can be determined by the `version` column. + +The following columns are only valid for v2 users: +* `invitedBy` - The address of the user who invited the user. +* `name` - The name of the group or organization. +* `cidV0Digest` - The token metadata CID of the avatar. + +```shell +curl -X POST --data '{ + "jsonrpc": "2.0", + "id": 1, + "method": "circles_query", + "params": [ + { + "Namespace": "V_Crc", + "Table": "Avatars", + "Limit": 10, + "Columns": [], + "Filter": [], + "Order": [ + { + "Column": "blockNumber", + "SortOrder": "DESC" + }, + { + "Column": "transactionIndex", + "SortOrder": "DESC" + }, + { + "Column": "logIndex", + "SortOrder": "DESC" + } + ] + } + ] +}' -H "Content-Type: application/json" http://localhost:8545/ +``` + +##### Response: + +```json +{ + "jsonrpc": "2.0", + "result": { + "Columns": [ + "blockNumber", + "timestamp", + "transactionIndex", + "logIndex", + "transactionHash", + "version", + "type", + "invitedBy", + "avatar", + "tokenId", + "name", + "cidV0Digest" + ], + "Rows": [ + [ + 9833016, + 1715978910, + 0, + 2, + "0x9d5e2ac311eed1c258f9f0885b464baa72e2a36936314723060a03ea59790d72", + 2, + "human", + "0xc661fe4ce147c209ea6ca66a2a2323b69791a463", + "0x52098d2cae70c5f1cda44305c10bf39b98dde4cc", + "0x52098d2cae70c5f1cda44305c10bf39b98dde4cc", + null, + null + ], + [ + 9819862, + 1715910125, + 0, + 2, + "0xbd4c3cdf7f0e075f14099e7e5263cce6d0617bc3fc18c92635654b8496d51a77", + 1, + "human", + null, + "0xa315ae910694d7d94406c07962ed56400491cfd4", + "0x31807cb064a3688bd1cdac56a4a55ee5d78665cd", + null, + null + ], + [ + 9819751, + 1715909570, + 0, + 1, + "0x408796aed78e7743b0c4851a003dfb343987a206ddb9bab9ee8d87f6f34c4224", + 2, + "group", + null, + "0xabab7fccac344519639449f843d966b24730836d", + "0xabab7fccac344519639449f843d966b24730836d", + "Hans Peter Meier Wurstwaren GmbH", + "0x0e7071c59df3b9454d1d18a15270aa36d54f89606a576dc621757afd44ad1d2e" + ] + ] + }, + "id": 1 +} +``` + +##### Get the trust relations between avatars + +This query returns the trust relations between avatars. + +The following columns are only valid for v1 trust relations: +* `limit` - The trust limit (0 is no trust, 100 full trust). + +The following columns are only valid for v2 trust relations: +* `expiryTime` - The expiry time of the trust relation. + +```shell +curl -X POST --data '{ + "jsonrpc": "2.0", + "id": 1, + "method": "circles_query", + "params": [ + { + "Namespace": "V_Crc", + "Table": "TrustRelations", + "Columns": [], + "Filter": [ + { + "Type": "Conjunction", + "ConjunctionType": "Or", + "Predicates": [ + { + "Type": "FilterPredicate", + "FilterType": "Equals", + "Column": "truster", + "Value": "0xae3a29a9ff24d0e936a5579bae5c4179c4dff565" + }, + { + "Type": "FilterPredicate", + "FilterType": "Equals", + "Column": "trustee", + "Value": "0xae3a29a9ff24d0e936a5579bae5c4179c4dff565" + } + ] + } + ], + "Order": [ + { + "Column": "blockNumber", + "SortOrder": "DESC" + }, + { + "Column": "transactionIndex", + "SortOrder": "DESC" + }, + { + "Column": "logIndex", + "SortOrder": "DESC" + } + ] + } + ] +}' -H "Content-Type: application/json" http://localhost:8545/ +``` + +##### Response: + +```json +{ + "jsonrpc": "2.0", + "result": { + "Columns": [ + "blockNumber", + "timestamp", + "transactionIndex", + "logIndex", + "transactionHash", + "version", + "trustee", + "truster", + "expiryTime", + "limit" + ], + "Rows": [ + [ + 9819804, + 1715909835, + 0, + 0, + "0x41670ceb0bd544f69a6c41ab5390df4ea3ae782cf89b693ac0d7908999bd2f47", + 2, + "0xae3a29a9ff24d0e936a5579bae5c4179c4dff565", + "0x25548e3e36c2d1862e4f7aa99a490bf71ed087ca", + "79228162514264337593543950335", + null + ], + [ + 9814663, + 1715883990, + 0, + 1, + "0xb60737ba5a6f5da7dcde863a36008e9199ddd0b85a76e51b17293c8cc50d7379", + 1, + "0xae3a29a9ff24d0e936a5579bae5c4179c4dff565", + "0xae3a29a9ff24d0e936a5579bae5c4179c4dff565", + null, + "100" + ] + ] + }, + "id": 1 +} +``` \ No newline at end of file diff --git a/v1-example-requests.md b/v1-example-requests.md index 4e474b1..b73ff38 100644 --- a/v1-example-requests.md +++ b/v1-example-requests.md @@ -1,4 +1,4 @@ -## Circles V1 RPC methods +## Circles V1 RPC examples 1. [circles_getTotalBalance](#circles_getTotalBalance) 2. [circles_getTokenBalances](#circles_getTokenBalances) diff --git a/v2-example-requests.md b/v2-example-requests.md index c14e7b7..fa6fb7a 100644 --- a/v2-example-requests.md +++ b/v2-example-requests.md @@ -1,10 +1,10 @@ -## Circles V2 RPC methods +## Circles V2 RPC examples 1. [circlesV2_getTotalBalance](#circlesV2_getTotalBalance) 2. [circlesV2_getTokenBalances](#circlesV2_getTokenBalances) 3. [circles_query](#circles_query) 3.1. [Get the transaction history of a wallet](#get-the-transaction-history-of-a-wallet) -3.2. [Get a list of Circles users](#get-a-list-of-circles-users) +3.2. [Get a list of Circles avatars](#get-a-list-of-circles-users) 3.3. [Get the trust relations between avatars](#get-the-trust-relations-between-avatars) ### circlesV2_getTotalBalance @@ -178,7 +178,7 @@ curl -X POST --data '{ } ``` -##### Get a list of Circles users +##### Get a list of Circles avatars Query latest 10 Circles V2 registrations: diff --git a/x64.Dockerfile b/x64.Dockerfile index 58d90be..a2b0a53 100644 --- a/x64.Dockerfile +++ b/x64.Dockerfile @@ -15,6 +15,7 @@ COPY --from=build /circles-nethermind-plugin/Circles.Index.Common.dll /nethermin COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV1.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.NameRegistry.dll /nethermind/plugins +COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesViews.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Postgres.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Rpc.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Query.dll /nethermind/plugins diff --git a/x64.debug.Dockerfile b/x64.debug.Dockerfile index 653b53e..8cd62e6 100644 --- a/x64.debug.Dockerfile +++ b/x64.debug.Dockerfile @@ -20,6 +20,8 @@ COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.dll /nether COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.pdb /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.NameRegistry.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.NameRegistry.pdb /nethermind/plugins +COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesViews.dll /nethermind/plugins +COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesViews.pdb /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Postgres.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Postgres.pdb /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Rpc.dll /nethermind/plugins diff --git a/x64.debug.spaceneth.Dockerfile b/x64.debug.spaceneth.Dockerfile index ee2609c..a3ee178 100644 --- a/x64.debug.spaceneth.Dockerfile +++ b/x64.debug.spaceneth.Dockerfile @@ -20,6 +20,8 @@ COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.dll /nether COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.pdb /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.NameRegistry.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesV2.NameRegistry.pdb /nethermind/plugins +COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesViews.dll /nethermind/plugins +COPY --from=build /circles-nethermind-plugin/Circles.Index.CirclesViews.pdb /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Postgres.dll /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Postgres.pdb /nethermind/plugins COPY --from=build /circles-nethermind-plugin/Circles.Index.Rpc.dll /nethermind/plugins