Skip to content

Commit b9d0fbb

Browse files
committed
Add prehook to the SDK
1 parent cec8f75 commit b9d0fbb

21 files changed

Lines changed: 1034 additions & 14 deletions

File tree

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
[submodule "submodules/chainlink-protos"]
22
path = submodules/chainlink-protos
33
url = https://github.com/smartcontractkit/chainlink-protos.git
4+
branch = rtinianov_restricted

packages/cre-sdk/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
COMMON_VERSION ?= cre-std-tests@0.6.0
1+
COMMON_VERSION ?= 54aedc8127f2cf95192907873ed4286d422a7053
22
MODULE := github.com/smartcontractkit/chainlink-common
33
TEST_PATTERN ?= ^TestStandard
44

packages/cre-sdk/src/generated-sdk/capabilities/blockchain/evm/v1alpha/client_sdk_gen.ts

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import {
5151
WriteReportRequestSchema,
5252
} from '@cre/generated/capabilities/blockchain/evm/v1alpha/client_pb'
5353
import {
54+
type CapabilityRestrictionJson,
5455
type ReportResponse,
5556
type ReportResponseJson,
5657
ReportResponseSchema,
@@ -519,3 +520,110 @@ class ClientLogTrigger implements Trigger<Log, Log> {
519520
return rawOutput
520521
}
521522
}
523+
export class ClientRestrictor {
524+
constructor(private readonly ChainSelector: bigint) {}
525+
526+
limitCallContract(maxCalls: number): CapabilityRestrictionJson {
527+
// Include all labels in capability ID for routing when specified
528+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
529+
530+
return {
531+
method: {
532+
id: capabilityId,
533+
method: 'CallContract',
534+
maxCalls,
535+
},
536+
}
537+
}
538+
539+
limitFilterLogs(maxCalls: number): CapabilityRestrictionJson {
540+
// Include all labels in capability ID for routing when specified
541+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
542+
543+
return {
544+
method: {
545+
id: capabilityId,
546+
method: 'FilterLogs',
547+
maxCalls,
548+
},
549+
}
550+
}
551+
552+
limitBalanceAt(maxCalls: number): CapabilityRestrictionJson {
553+
// Include all labels in capability ID for routing when specified
554+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
555+
556+
return {
557+
method: {
558+
id: capabilityId,
559+
method: 'BalanceAt',
560+
maxCalls,
561+
},
562+
}
563+
}
564+
565+
limitEstimateGas(maxCalls: number): CapabilityRestrictionJson {
566+
// Include all labels in capability ID for routing when specified
567+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
568+
569+
return {
570+
method: {
571+
id: capabilityId,
572+
method: 'EstimateGas',
573+
maxCalls,
574+
},
575+
}
576+
}
577+
578+
limitGetTransactionByHash(maxCalls: number): CapabilityRestrictionJson {
579+
// Include all labels in capability ID for routing when specified
580+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
581+
582+
return {
583+
method: {
584+
id: capabilityId,
585+
method: 'GetTransactionByHash',
586+
maxCalls,
587+
},
588+
}
589+
}
590+
591+
limitGetTransactionReceipt(maxCalls: number): CapabilityRestrictionJson {
592+
// Include all labels in capability ID for routing when specified
593+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
594+
595+
return {
596+
method: {
597+
id: capabilityId,
598+
method: 'GetTransactionReceipt',
599+
maxCalls,
600+
},
601+
}
602+
}
603+
604+
limitHeaderByNumber(maxCalls: number): CapabilityRestrictionJson {
605+
// Include all labels in capability ID for routing when specified
606+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
607+
608+
return {
609+
method: {
610+
id: capabilityId,
611+
method: 'HeaderByNumber',
612+
maxCalls,
613+
},
614+
}
615+
}
616+
617+
limitWriteReport(maxCalls: number): CapabilityRestrictionJson {
618+
// Include all labels in capability ID for routing when specified
619+
const capabilityId = `${ClientCapability.CAPABILITY_NAME}:ChainSelector:${this.ChainSelector}@${ClientCapability.CAPABILITY_VERSION}`
620+
621+
return {
622+
method: {
623+
id: capabilityId,
624+
method: 'WriteReport',
625+
maxCalls,
626+
},
627+
}
628+
}
629+
}

packages/cre-sdk/src/generated-sdk/capabilities/internal/actionandtrigger/v1/basic_sdk_gen.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
type TriggerEvent,
1313
TriggerEventSchema,
1414
} from '@cre/generated/capabilities/internal/actionandtrigger/v1/action_and_trigger_pb'
15+
import type { CapabilityRestrictionJson } from '@cre/generated/sdk/v1alpha/sdk_pb'
1516
import type { Runtime } from '@cre/sdk'
1617
import { Report } from '@cre/sdk/report'
1718
import { hexToBytes } from '@cre/sdk/utils/hex-utils'
@@ -108,3 +109,16 @@ class BasicTrigger implements Trigger<TriggerEvent, TriggerEvent> {
108109
return rawOutput
109110
}
110111
}
112+
export class BasicRestrictor {
113+
limitAction(maxCalls: number): CapabilityRestrictionJson {
114+
const capabilityId = BasicCapability.CAPABILITY_ID
115+
116+
return {
117+
method: {
118+
id: capabilityId,
119+
method: 'Action',
120+
maxCalls,
121+
},
122+
}
123+
}
124+
}

packages/cre-sdk/src/generated-sdk/capabilities/internal/basicaction/v1/basicaction_sdk_gen.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
type Outputs,
77
OutputsSchema,
88
} from '@cre/generated/capabilities/internal/basicaction/v1/basic_action_pb'
9+
import type { CapabilityRestrictionJson } from '@cre/generated/sdk/v1alpha/sdk_pb'
910
import type { Runtime } from '@cre/sdk'
1011
import { Report } from '@cre/sdk/report'
1112
import { hexToBytes } from '@cre/sdk/utils/hex-utils'
@@ -55,3 +56,17 @@ export class BasicActionCapability {
5556
}
5657
}
5758
}
59+
60+
export class BasicActionRestrictor {
61+
limitPerformAction(maxCalls: number): CapabilityRestrictionJson {
62+
const capabilityId = BasicActionCapability.CAPABILITY_ID
63+
64+
return {
65+
method: {
66+
id: capabilityId,
67+
method: 'PerformAction',
68+
maxCalls,
69+
},
70+
}
71+
}
72+
}

packages/cre-sdk/src/generated-sdk/capabilities/internal/basictrigger/v1/basic_sdk_gen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,4 @@ class BasicTrigger implements Trigger<Outputs, Outputs> {
6969
return rawOutput
7070
}
7171
}
72+
export class BasicRestrictor {}

packages/cre-sdk/src/generated-sdk/capabilities/internal/consensus/v1alpha/consensus_sdk_gen.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { fromJson } from '@bufbuild/protobuf'
22
import {
3+
type CapabilityRestrictionJson,
34
type ReportRequest,
45
type ReportRequestJson,
56
ReportRequestSchema,
@@ -96,3 +97,29 @@ export class ConsensusCapability {
9697
}
9798
}
9899
}
100+
101+
export class ConsensusRestrictor {
102+
limitSimple(maxCalls: number): CapabilityRestrictionJson {
103+
const capabilityId = ConsensusCapability.CAPABILITY_ID
104+
105+
return {
106+
method: {
107+
id: capabilityId,
108+
method: 'Simple',
109+
maxCalls,
110+
},
111+
}
112+
}
113+
114+
limitReport(maxCalls: number): CapabilityRestrictionJson {
115+
const capabilityId = ConsensusCapability.CAPABILITY_ID
116+
117+
return {
118+
method: {
119+
id: capabilityId,
120+
method: 'Report',
121+
maxCalls,
122+
},
123+
}
124+
}
125+
}

packages/cre-sdk/src/generated-sdk/capabilities/internal/nodeaction/v1/basicaction_sdk_gen.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
type NodeOutputs,
77
NodeOutputsSchema,
88
} from '@cre/generated/capabilities/internal/nodeaction/v1/node_action_pb'
9+
import type { CapabilityRestrictionJson } from '@cre/generated/sdk/v1alpha/sdk_pb'
910
import type { NodeRuntime, Runtime } from '@cre/sdk'
1011
import { Report } from '@cre/sdk/report'
1112
import type { ConsensusAggregation, PrimitiveTypes, UnwrapOptions } from '@cre/sdk/utils'
@@ -105,3 +106,17 @@ export class BasicActionCapability {
105106
return runtime.runInNodeMode(wrappedFn, consensusAggregation, unwrapOptions)
106107
}
107108
}
109+
110+
export class BasicActionRestrictor {
111+
limitPerformAction(maxCalls: number): CapabilityRestrictionJson {
112+
const capabilityId = BasicActionCapability.CAPABILITY_ID
113+
114+
return {
115+
method: {
116+
id: capabilityId,
117+
method: 'PerformAction',
118+
maxCalls,
119+
},
120+
}
121+
}
122+
}

packages/cre-sdk/src/generated-sdk/capabilities/networking/confidentialhttp/v1alpha/client_sdk_gen.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
type HTTPResponse,
77
HTTPResponseSchema,
88
} from '@cre/generated/capabilities/networking/confidentialhttp/v1alpha/client_pb'
9+
import type { CapabilityRestrictionJson } from '@cre/generated/sdk/v1alpha/sdk_pb'
910
import type { Runtime } from '@cre/sdk'
1011
import { Report } from '@cre/sdk/report'
1112
import { hexToBytes } from '@cre/sdk/utils/hex-utils'
@@ -58,3 +59,17 @@ export class ClientCapability {
5859
}
5960
}
6061
}
62+
63+
export class ClientRestrictor {
64+
limitSendRequest(maxCalls: number): CapabilityRestrictionJson {
65+
const capabilityId = ClientCapability.CAPABILITY_ID
66+
67+
return {
68+
method: {
69+
id: capabilityId,
70+
method: 'SendRequest',
71+
maxCalls,
72+
},
73+
}
74+
}
75+
}

packages/cre-sdk/src/generated-sdk/capabilities/networking/http/v1alpha/client_sdk_gen.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
type Response,
77
ResponseSchema,
88
} from '@cre/generated/capabilities/networking/http/v1alpha/client_pb'
9+
import type { CapabilityRestrictionJson } from '@cre/generated/sdk/v1alpha/sdk_pb'
910
import type { NodeRuntime, Runtime } from '@cre/sdk'
1011
import { Report } from '@cre/sdk/report'
1112
import type { ConsensusAggregation, PrimitiveTypes, UnwrapOptions } from '@cre/sdk/utils'
@@ -105,3 +106,17 @@ export class ClientCapability {
105106
return runtime.runInNodeMode(wrappedFn, consensusAggregation, unwrapOptions)
106107
}
107108
}
109+
110+
export class ClientRestrictor {
111+
limitSendRequest(maxCalls: number): CapabilityRestrictionJson {
112+
const capabilityId = ClientCapability.CAPABILITY_ID
113+
114+
return {
115+
method: {
116+
id: capabilityId,
117+
method: 'SendRequest',
118+
maxCalls,
119+
},
120+
}
121+
}
122+
}

0 commit comments

Comments
 (0)