Skip to content

Commit 521cdb5

Browse files
authored
Move Contribution from iexec-common to iexec-worker (#636)
1 parent dfc56c0 commit 521cdb5

File tree

8 files changed

+62
-46
lines changed

8 files changed

+62
-46
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file.
2020
- Do not fall back to blockchain adapter URL when fetching public configuration. (#628 #629)
2121
- Move `WorkerModel` from `iexec-common` to `iexec-core-library`. (#633)
2222
- Move `TaskAbortCause` from `iexec-commons-poco` to `iexec-core-library`. (#634)
23+
- Move `Contribution` from `iexec-common` to `iexec-worker`. (#636)
2324

2425
### Dependency Upgrades
2526

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright 2025 IEXEC BLOCKCHAIN TECH
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.iexec.worker.chain;
18+
19+
import lombok.Builder;
20+
21+
@Builder
22+
public record Contribution(String chainTaskId,
23+
String resultDigest,
24+
String resultHash,
25+
String resultSeal,
26+
String enclaveSignature,
27+
String workerPoolSignature,
28+
String enclaveChallenge) {
29+
}

src/main/java/com/iexec/worker/chain/ContributionService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.iexec.worker.chain;
1818

19-
import com.iexec.common.contribution.Contribution;
2019
import com.iexec.common.replicate.ReplicateStatusCause;
2120
import com.iexec.common.result.ComputedFile;
2221
import com.iexec.commons.poco.chain.*;
@@ -32,7 +31,6 @@
3231

3332
import static com.iexec.common.replicate.ReplicateStatusCause.*;
3433

35-
3634
@Slf4j
3735
@Service
3836
public class ContributionService {
@@ -125,16 +123,16 @@ private boolean hasEnoughStakeToContribute(ChainTask chainTask) {
125123
}
126124

127125
// returns ChainReceipt of the contribution if successful, null otherwise
128-
public Optional<ChainReceipt> contribute(Contribution contribution) {
126+
public Optional<ChainReceipt> contribute(final Contribution contribution) {
129127

130128
IexecHubContract.TaskContributeEventResponse contributeResponse = iexecHubService.contribute(contribution);
131129

132130
if (contributeResponse == null) {
133-
log.error("ContributeTransactionReceipt received but was null [chainTaskId:{}]", contribution.getChainTaskId());
131+
log.error("ContributeTransactionReceipt received but was null [chainTaskId:{}]", contribution.chainTaskId());
134132
return Optional.empty();
135133
}
136134

137-
ChainReceipt chainReceipt = ChainUtils.buildChainReceipt(contributeResponse.log, contribution.getChainTaskId(),
135+
final ChainReceipt chainReceipt = ChainUtils.buildChainReceipt(contributeResponse.log, contribution.chainTaskId(),
138136
iexecHubService.getLatestBlockNumber());
139137

140138
return Optional.of(chainReceipt);

src/main/java/com/iexec/worker/chain/IexecHubService.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package com.iexec.worker.chain;
1818

19-
20-
import com.iexec.common.contribution.Contribution;
2119
import com.iexec.common.lifecycle.purge.Purgeable;
2220
import com.iexec.commons.poco.chain.*;
2321
import com.iexec.commons.poco.contract.generated.IexecHubContract;
@@ -42,7 +40,6 @@
4240
import static com.iexec.commons.poco.utils.BytesUtils.bytesToString;
4341
import static com.iexec.commons.poco.utils.BytesUtils.stringToBytes;
4442

45-
4643
@Slf4j
4744
@Service
4845
public class IexecHubService extends IexecHubAbstractService implements Purgeable {
@@ -68,20 +65,20 @@ public IexecHubService(SignerService signerService,
6865

6966
// region contribute
7067
IexecHubContract.TaskContributeEventResponse contribute(final Contribution contribution) {
71-
log.info("contribute request [chainTaskId:{}, waitingTxCount:{}]", contribution.getChainTaskId(), getWaitingTransactionCount());
68+
log.info("contribute request [chainTaskId:{}, waitingTxCount:{}]", contribution.chainTaskId(), getWaitingTransactionCount());
7269
return sendContributeTransaction(contribution);
7370
}
7471

7572
private IexecHubContract.TaskContributeEventResponse sendContributeTransaction(final Contribution contribution) {
76-
final String chainTaskId = contribution.getChainTaskId();
73+
final String chainTaskId = contribution.chainTaskId();
7774

7875
final RemoteCall<TransactionReceipt> contributeCall = iexecHubContract.contribute(
7976
stringToBytes(chainTaskId),
80-
stringToBytes(contribution.getResultHash()),
81-
stringToBytes(contribution.getResultSeal()),
82-
contribution.getEnclaveChallenge(),
83-
stringToBytes(contribution.getEnclaveSignature()),
84-
stringToBytes(contribution.getWorkerPoolSignature()));
77+
stringToBytes(contribution.resultHash()),
78+
stringToBytes(contribution.resultSeal()),
79+
contribution.enclaveChallenge(),
80+
stringToBytes(contribution.enclaveSignature()),
81+
stringToBytes(contribution.workerPoolSignature()));
8582
log.info("Sent contribute [chainTaskId:{}, contribution:{}]", chainTaskId, contribution);
8683

8784
final TransactionReceipt contributeReceipt = submit(chainTaskId, "contribute", contributeCall);
@@ -146,25 +143,25 @@ private IexecHubContract.TaskRevealEventResponse sendRevealTransaction(final Str
146143
public Optional<ChainReceipt> contributeAndFinalize(final Contribution contribution, final String resultLink,
147144
final String callbackData) {
148145
log.info("contributeAndFinalize request [chainTaskId:{}, waitingTxCount:{}]",
149-
contribution.getChainTaskId(), getWaitingTransactionCount());
146+
contribution.chainTaskId(), getWaitingTransactionCount());
150147
final IexecHubContract.TaskFinalizeEventResponse finalizeEvent = sendContributeAndFinalizeTransaction(contribution, resultLink, callbackData);
151148
return Optional.ofNullable(finalizeEvent)
152-
.map(event -> ChainUtils.buildChainReceipt(event.log, contribution.getChainTaskId(), getLatestBlockNumber()));
149+
.map(event -> ChainUtils.buildChainReceipt(event.log, contribution.chainTaskId(), getLatestBlockNumber()));
153150
}
154151

155152
private IexecHubContract.TaskFinalizeEventResponse sendContributeAndFinalizeTransaction(final Contribution contribution,
156153
final String resultLink,
157154
final String callbackData) {
158-
final String chainTaskId = contribution.getChainTaskId();
155+
final String chainTaskId = contribution.chainTaskId();
159156

160157
final RemoteCall<TransactionReceipt> contributeAndFinalizeCall = iexecHubContract.contributeAndFinalize(
161158
stringToBytes(chainTaskId),
162-
stringToBytes(contribution.getResultDigest()),
159+
stringToBytes(contribution.resultDigest()),
163160
StringUtils.isNotEmpty(resultLink) ? resultLink.getBytes(StandardCharsets.UTF_8) : new byte[0],
164161
StringUtils.isNotEmpty(callbackData) ? stringToBytes(callbackData) : new byte[0],
165-
contribution.getEnclaveChallenge(),
166-
stringToBytes(contribution.getEnclaveSignature()),
167-
stringToBytes(contribution.getWorkerPoolSignature()));
162+
contribution.enclaveChallenge(),
163+
stringToBytes(contribution.enclaveSignature()),
164+
stringToBytes(contribution.workerPoolSignature()));
168165
log.info("Sent contributeAndFinalize [chainTaskId:{}, contribution:{}, resultLink:{}, callbackData:{}]",
169166
chainTaskId, contribution, resultLink, callbackData);
170167

src/main/java/com/iexec/worker/task/TaskManagerService.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.iexec.worker.task;
1818

19-
import com.iexec.common.contribution.Contribution;
2019
import com.iexec.common.lifecycle.purge.PurgeService;
2120
import com.iexec.common.replicate.ComputeLogs;
2221
import com.iexec.common.replicate.ReplicateStatus;
@@ -27,6 +26,7 @@
2726
import com.iexec.commons.poco.chain.WorkerpoolAuthorization;
2827
import com.iexec.commons.poco.task.TaskDescription;
2928
import com.iexec.core.notification.TaskNotificationExtra;
29+
import com.iexec.worker.chain.Contribution;
3030
import com.iexec.worker.chain.ContributionService;
3131
import com.iexec.worker.chain.IexecHubService;
3232
import com.iexec.worker.chain.RevealService;
@@ -310,8 +310,7 @@ private ReplicateActionResponse contributeOrContributeAndFinalize(String chainTa
310310
}
311311

312312
if (!hasEnoughGas()) {
313-
return getFailureResponseAndPrintError(OUT_OF_GAS,
314-
context, chainTaskId);
313+
return getFailureResponseAndPrintError(OUT_OF_GAS, context, chainTaskId);
315314
}
316315

317316
ComputedFile computedFile = resultService.getComputedFile(chainTaskId);
@@ -371,13 +370,11 @@ ReplicateActionResponse reveal(String chainTaskId,
371370
TaskNotificationExtra extra) {
372371
String context = "reveal";
373372
if (extra == null || extra.getBlockNumber() == 0) {
374-
return getFailureResponseAndPrintError(CONSENSUS_BLOCK_MISSING,
375-
context, chainTaskId);
373+
return getFailureResponseAndPrintError(CONSENSUS_BLOCK_MISSING, context, chainTaskId);
376374
}
377375
long consensusBlock = extra.getBlockNumber();
378376

379-
ComputedFile computedFile =
380-
resultService.getComputedFile(chainTaskId);
377+
final ComputedFile computedFile = resultService.getComputedFile(chainTaskId);
381378
String resultDigest = computedFile != null ?
382379
computedFile.getResultDigest() : "";
383380

@@ -386,17 +383,13 @@ ReplicateActionResponse reveal(String chainTaskId,
386383
return ReplicateActionResponse.failure(DETERMINISM_HASH_NOT_FOUND);
387384
}
388385

389-
if (!revealService.isConsensusBlockReached(chainTaskId,
390-
consensusBlock)) {
391-
return getFailureResponseAndPrintError(BLOCK_NOT_REACHED,
392-
context, chainTaskId
386+
if (!revealService.isConsensusBlockReached(chainTaskId, consensusBlock)) {
387+
return getFailureResponseAndPrintError(BLOCK_NOT_REACHED, context, chainTaskId
393388
);
394389
}
395390

396-
if (!revealService.repeatCanReveal(chainTaskId,
397-
resultDigest)) {
398-
return getFailureResponseAndPrintError(CANNOT_REVEAL,
399-
context, chainTaskId);
391+
if (!revealService.repeatCanReveal(chainTaskId, resultDigest)) {
392+
return getFailureResponseAndPrintError(CANNOT_REVEAL, context, chainTaskId);
400393
}
401394

402395
if (!hasEnoughGas()) {

src/test/java/com/iexec/worker/chain/ContributionServiceTests.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.iexec.worker.chain;
1818

19-
import com.iexec.common.contribution.Contribution;
2019
import com.iexec.common.result.ComputedFile;
2120
import com.iexec.commons.poco.chain.*;
2221
import com.iexec.commons.poco.task.TaskDescription;
@@ -350,12 +349,12 @@ void getContributionWithTee() {
350349
Contribution contribution = contributionService.getContribution(computedFile);
351350

352351
assertNotNull(contribution);
353-
assertEquals(chainTaskId, contribution.getChainTaskId());
354-
assertEquals(resultDigest, contribution.getResultDigest());
355-
assertEquals(resultSeal, contribution.getResultSeal());
356-
assertEquals(TestUtils.ENCLAVE_ADDRESS, contribution.getEnclaveChallenge());
357-
assertEquals("0xenclaveSignature", contribution.getEnclaveSignature());
358-
assertEquals(teeWorkerpoolAuth.getSignature().getValue(), contribution.getWorkerPoolSignature());
352+
assertEquals(chainTaskId, contribution.chainTaskId());
353+
assertEquals(resultDigest, contribution.resultDigest());
354+
assertEquals(resultSeal, contribution.resultSeal());
355+
assertEquals(TestUtils.ENCLAVE_ADDRESS, contribution.enclaveChallenge());
356+
assertEquals("0xenclaveSignature", contribution.enclaveSignature());
357+
assertEquals(teeWorkerpoolAuth.getSignature().getValue(), contribution.workerPoolSignature());
359358

360359
Contribution expectedContribution = Contribution.builder()
361360
.chainTaskId(chainTaskId)

src/test/java/com/iexec/worker/chain/IexecHubServiceTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.iexec.worker.chain;
1818

19-
import com.iexec.common.contribution.Contribution;
2019
import com.iexec.commons.poco.chain.ChainContribution;
2120
import com.iexec.commons.poco.chain.ChainContributionStatus;
2221
import com.iexec.commons.poco.chain.ChainReceipt;

src/test/java/com/iexec/worker/task/TaskManagerServiceTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.iexec.worker.task;
1818

19-
import com.iexec.common.contribution.Contribution;
2019
import com.iexec.common.lifecycle.purge.PurgeService;
2120
import com.iexec.common.replicate.ComputeLogs;
2221
import com.iexec.common.replicate.ReplicateStatusCause;
@@ -29,6 +28,7 @@
2928
import com.iexec.commons.poco.task.TaskDescription;
3029
import com.iexec.core.notification.TaskNotificationExtra;
3130
import com.iexec.sms.api.TeeSessionGenerationResponse;
31+
import com.iexec.worker.chain.Contribution;
3232
import com.iexec.worker.chain.ContributionService;
3333
import com.iexec.worker.chain.IexecHubService;
3434
import com.iexec.worker.chain.RevealService;

0 commit comments

Comments
 (0)