Conversation
|
|
||
| // ensureLocalDepsDockerignore writes a temporary .dockerignore in parentDir so the Docker build | ||
| // context includes only chainlink, chainlink-common, capabilities, and optionally chainlink-aptos | ||
| // (avoids sending the entire parent dir, e.g. 22GB+ and I/O errors). Caller must run the returned cleanup. |
There was a problem hiding this comment.
curious about this... I had the same problem, it should be fixed now that I added .git to the main .dockerignore. Can you check if yours contains .git?
|
|
||
| // ensureLocalDepsNodeImage builds the chainlink node image when node specs use docker_file and | ||
| // docker_ctx for the local-deps Dockerfile (context ".."). The framework corrupts absolute paths | ||
| // (e.g. produces "../Users"), so we build the image ourselves with correct paths and then set |
| } | ||
| fmt.Print(libformat.PurpleText("\tCapabilities: %s\n", capabilitiesDesc)) | ||
| fmt.Print(libformat.PurpleText("\tDON Types: %s\n\n", strings.Join(nodeSet.DONTypes, ", "))) | ||
| } |
There was a problem hiding this comment.
why do we need that if we have this?
DONs
+-------------------+-------------------+-------+------------+---------------------+
| DON | Types | Nodes | EVM Chains | Attributes |
+-------------------+-------------------+-------+------------+---------------------+
| bootstrap-gateway | bootstrap,gateway | 1 | 1337, 2337 | - |
| capabilities | capabilities | 4 | 1337, 2337 | remote-capabilities |
| workflow | workflow | 4 | 1337, 2337 | - |
+-------------------+-------------------+-------+------------+---------------------+
Capability Matrix
+-----------------+-------------------+-----------------------+--------------+
| Capability | bootstrap-gateway | capabilities | workflow |
+-----------------+-------------------+-----------------------+--------------+
| consensus | - | - | local |
| cron | - | - | local |
| custom-compute | - | - | local |
| don-time | - | - | local |
| evm | - | remote-exposed (2337) | local (1337) |
| http-action | - | - | local |
| http-trigger | - | - | local |
| ocr3 | - | - | local |
| read-contract | - | remote-exposed (2337) | local (1337) |
| vault | - | remote-exposed | - |
| web-api-target | - | remote-exposed | - |
| web-api-trigger | - | - | local |
| write-evm | - | remote-exposed (2337) | local (1337) |
| Features: features, | ||
| GatewayWhitelistConfig: gatewayWhitelistConfig, | ||
| BlockchainDeployers: blockchains_sets.NewDeployerSet(testLogger, in.Infra), | ||
| AptosForwarderAddresses: in.AptosForwarderAddresses, |
There was a problem hiding this comment.
where does this come from? any reason for passing it here instead of deploying it in pre/post startup hook? or if this is some static value per chainID you could pass it via capabilities values as map of map[chainID]address.
| return "", fmt.Errorf("failed to resolve docker context path: %w", err) | ||
| } | ||
| } | ||
| args := []string{"build", "-t", c.LocalImage, "-f", dockerfilePath, ctxPath} |
There was a problem hiding this comment.
I understand this is a temporary helper?
| for target in "$@"; do | ||
| run_target "$target" | ||
| done | ||
|
|
There was a problem hiding this comment.
is this file a temporary helper? if not, I think this should go GNUMakefile
| require ( | ||
| github.com/smartcontractkit/chainlink/deployment v0.0.0-20251021194914-c0e3fec1a97c | ||
| github.com/smartcontractkit/chainlink/v2 v2.32.0 | ||
| ) |
plugins/plugins.public.yaml
Outdated
| @@ -10,21 +10,19 @@ defaults: | |||
| plugins: | |||
| aptos: | |||
| - moduleURI: "github.com/smartcontractkit/chainlink-aptos" | |||
| gitRef: "v0.0.0-20260217195306-9fec97c5dfbd" | |||
| gitRef: "v0.0.0-20260226223744-e59e9b1ad93f" | |||
There was a problem hiding this comment.
what's the diff between that public and private plugin?
| "Workflow": map[string]any{"ForwarderAddress": ac.ForwarderAddress}, | ||
| "Nodes": []map[string]any{{"Name": "default", "URL": ac.NodeURL}}, | ||
| }) | ||
| } |
There was a problem hiding this comment.
I think this should be done in features/aptos... the reason we have EVM here is that it is required for node to function, but aptos is optional and dependent on whether a DON has this capability or not
| @@ -65,7 +65,9 @@ type Config struct { | |||
| FakeHTTP *fake.Input `toml:"fake_http" validate:"required"` | |||
| S3ProviderInput *s3provider.Input `toml:"s3provider"` | |||
| CapabilityConfigs map[string]cre.CapabilityConfig `toml:"capability_configs"` // capability flag -> capability config | |||
| Addresses []string `toml:"addresses"` | |||
| // Optional map of Aptos chain selector -> forwarder address used for Aptos write capability runtime config. | |||
| AptosForwarderAddresses map[uint64]string `toml:"aptos_forwarder_addresses"` | |||
There was a problem hiding this comment.
this should go to the default aptos capability config toml
| } | ||
|
|
||
| return nil | ||
| } |
There was a problem hiding this comment.
all of that code should go to features/aptos, it deffo doesn't belong here
| // the Capability Registry (required for Aptos and other topologies where nodes have multiple chains). | ||
| if waitErr := waitForWorkflowNodesEVMChainConfig(ctx, deployKeystoneContractsOutput.Env.Offchain, dons, testLogger); waitErr != nil { | ||
| return nil, pkgerrors.Wrap(waitErr, "failed waiting for workflow nodes to register EVM chain config with Job Distributor") | ||
| } |
There was a problem hiding this comment.
why is this needed? once nodes are registered with JD this must be true... afaik this is not an async operation.
| aptosForwarderAddresses, | ||
| ); cfgErr != nil { | ||
| return nil, fmt.Errorf("failed to configure Aptos forwarders: %w", cfgErr) | ||
| } |
There was a problem hiding this comment.
sure we don't need it any more?
There was a problem hiding this comment.
I think this was a git merge error. Will revert. I did not intend to touch this code.
| return fmt.Errorf("no OCR2 key bundle id found for node %s", n.Name) | ||
| // Best-effort self-heal: create missing OCR2 key bundle for this chain type, | ||
| // then re-fetch the bundle ID from GraphQL. | ||
| if n.Clients.RestClient == nil { |
There was a problem hiding this comment.
why is the bundle be missing in the first place?
| @@ -1264,6 +1272,11 @@ func (c *NodeSet) chainCapabilityIDs() []uint64 { | |||
| return out | |||
| } | |||
|
|
|||
| // ChainCapabilityChainIDs returns the set of chain IDs supported by this node set's chain-scoped capabilities (e.g. read-contract-4, write-aptos-4). | |||
| func (c *NodeSet) ChainCapabilityChainIDs() []uint64 { | |||
| return c.chainCapabilityIDs() | |||
There was a problem hiding this comment.
why not make it public instead?
| t.Run("[v2] Aptos Write Expected Failure", func(t *testing.T) { | ||
| ExecuteAptosWriteExpectedFailureOnlyTest(t, testEnv) | ||
| }) | ||
| } |
There was a problem hiding this comment.
in the final version we'd probably only want to keep roundtrip + failure so that execution time in CI doesn't explode, would that be possible?
| userLogsCh := make(chan *workflowevents.UserLogs, 1000) | ||
| baseMessageCh := make(chan *commonevents.BaseMessage, 1000) | ||
|
|
||
| server := t_helpers.StartChipTestSink(t, t_helpers.GetLoggingPublishFn(lggr, userLogsCh, baseMessageCh, "./logs/aptos_capability_workflow_test.log")) |
0d6ee82 to
e5e9956
Compare
CORA - Pending Reviewers
Legend: ✅ Approved | ❌ Changes Requested | 💬 Commented | 🚫 Dismissed | ⏳ Pending | ❓ Unknown For more details, see the full review summary. |
|
I see you updated files related to
|
|
✅ No conflicts with other open PRs targeting |
|


This is currently a proof of concept demo, not an intention to merge.
Code quality and conventions need combing through.