Skip to content

Commit e9186ae

Browse files
authored
Remove unused attestation v1 code (#7693)
There are unused functions in VC for legacy attestation data API.
1 parent eb95404 commit e9186ae

File tree

3 files changed

+0
-245
lines changed

3 files changed

+0
-245
lines changed

beacon_chain/spec/eth2_apis/rest_validator_calls.nim

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,6 @@ proc produceAttestationDataPlain*(
5454
meth: MethodGet.}
5555
## https://ethereum.github.io/beacon-APIs/#/Validator/produceAttestationData
5656

57-
proc getAggregatedAttestationPlain*(
58-
attestation_data_root: Eth2Digest,
59-
slot: Slot
60-
): RestPlainResponse {.
61-
rest, endpoint: "/eth/v1/validator/aggregate_attestation"
62-
meth: MethodGet.}
63-
## https://ethereum.github.io/beacon-APIs/#/Validator/getAggregatedAttestation
64-
6557
proc getAggregatedAttestationPlainV2*(
6658
attestation_data_root: Eth2Digest,
6759
slot: Slot,

beacon_chain/validator_client/api.nim

Lines changed: 0 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -1756,146 +1756,6 @@ proc submitPoolSyncCommitteeSignature*(
17561756
raise (ref ValidatorApiError)(
17571757
msg: "Failed to submit sync committee message", data: failures)
17581758

1759-
proc getAggregatedAttestation*(
1760-
vc: ValidatorClientRef,
1761-
slot: Slot,
1762-
root: Eth2Digest,
1763-
strategy: ApiStrategyKind
1764-
): Future[phase0.Attestation] {.
1765-
async: (raises: [CancelledError, ValidatorApiError]).} =
1766-
const
1767-
RequestName = "getAggregatedAttestation"
1768-
1769-
var failures: seq[ApiNodeFailure]
1770-
1771-
case strategy
1772-
of ApiStrategyKind.First:
1773-
let res = vc.firstSuccessParallel(
1774-
RestPlainResponse,
1775-
GetAggregatedAttestationResponse,
1776-
vc.OneThirdDuration,
1777-
ViableNodeStatus,
1778-
{BeaconNodeRole.AggregatedData},
1779-
getAggregatedAttestationPlain(it, root, slot)):
1780-
if apiResponse.isErr():
1781-
handleCommunicationError()
1782-
ApiResponse[GetAggregatedAttestationResponse].err(apiResponse.error)
1783-
else:
1784-
let response = apiResponse.get()
1785-
case response.status:
1786-
of 200:
1787-
let res = decodeBytes(GetAggregatedAttestationResponse, response.data,
1788-
response.contentType)
1789-
if res.isErr():
1790-
handleUnexpectedData()
1791-
ApiResponse[GetAggregatedAttestationResponse].err($res.error)
1792-
else:
1793-
ApiResponse[GetAggregatedAttestationResponse].ok(res.get())
1794-
of 400:
1795-
handle400()
1796-
ApiResponse[GetAggregatedAttestationResponse].err(
1797-
ResponseInvalidError)
1798-
of 404:
1799-
handle404()
1800-
ApiResponse[GetAggregatedAttestationResponse].err(
1801-
ResponseNotFoundError)
1802-
of 500:
1803-
handle500()
1804-
ApiResponse[GetAggregatedAttestationResponse].err(
1805-
ResponseInternalError)
1806-
else:
1807-
handleUnexpectedCode()
1808-
ApiResponse[GetAggregatedAttestationResponse].err(
1809-
ResponseUnexpectedError)
1810-
1811-
if res.isErr():
1812-
raise (ref ValidatorApiError)(msg: res.error, data: failures)
1813-
res.get().data
1814-
1815-
of ApiStrategyKind.Best:
1816-
let res = vc.bestSuccess(
1817-
RestPlainResponse,
1818-
GetAggregatedAttestationResponse,
1819-
float64,
1820-
vc.OneThirdDurationSoft,
1821-
vc.OneThirdDuration,
1822-
ViableNodeStatus,
1823-
{BeaconNodeRole.AggregatedData},
1824-
getAggregatedAttestationPlain(it, root, slot),
1825-
getAggregatedAttestationDataScore(itresponse)):
1826-
if apiResponse.isErr():
1827-
handleCommunicationError()
1828-
ApiResponse[GetAggregatedAttestationResponse].err(apiResponse.error)
1829-
else:
1830-
let response = apiResponse.get()
1831-
case response.status:
1832-
of 200:
1833-
let res = decodeBytes(GetAggregatedAttestationResponse, response.data,
1834-
response.contentType)
1835-
if res.isErr():
1836-
handleUnexpectedData()
1837-
ApiResponse[GetAggregatedAttestationResponse].err($res.error)
1838-
else:
1839-
ApiResponse[GetAggregatedAttestationResponse].ok(res.get())
1840-
of 400:
1841-
handle400()
1842-
ApiResponse[GetAggregatedAttestationResponse].err(
1843-
ResponseInvalidError)
1844-
of 404:
1845-
# A 404 error must be returned if no attestation is available for the
1846-
# requested `attestation_data_root`. To address the issue #6184, we
1847-
# use empty GetAggregatedAttestationResponse.
1848-
ApiResponse[GetAggregatedAttestationResponse].ok(
1849-
GetAggregatedAttestationResponse(
1850-
data: LowestScoreAggregatedAttestation))
1851-
of 500:
1852-
handle500()
1853-
ApiResponse[GetAggregatedAttestationResponse].err(
1854-
ResponseInternalError)
1855-
else:
1856-
handleUnexpectedCode()
1857-
ApiResponse[GetAggregatedAttestationResponse].err(
1858-
ResponseUnexpectedError)
1859-
1860-
if res.isErr():
1861-
raise (ref ValidatorApiError)(msg: res.error, data: failures)
1862-
res.get().data
1863-
1864-
of ApiStrategyKind.Priority:
1865-
vc.firstSuccessSequential(
1866-
RestPlainResponse,
1867-
vc.OneThirdDuration,
1868-
ViableNodeStatus,
1869-
{BeaconNodeRole.AggregatedData},
1870-
getAggregatedAttestationPlain(it, root, slot)):
1871-
if apiResponse.isErr():
1872-
handleCommunicationError()
1873-
false
1874-
else:
1875-
let response = apiResponse.get()
1876-
case response.status:
1877-
of 200:
1878-
let res = decodeBytes(GetAggregatedAttestationResponse, response.data,
1879-
response.contentType)
1880-
if res.isOk(): return res.get().data
1881-
handleUnexpectedData()
1882-
false
1883-
of 400:
1884-
handle400()
1885-
false
1886-
of 404:
1887-
handle404()
1888-
false
1889-
of 500:
1890-
handle500()
1891-
false
1892-
else:
1893-
handleUnexpectedCode()
1894-
false
1895-
1896-
raise (ref ValidatorApiError)(
1897-
msg: "Failed to get aggregated attestation", data: failures)
1898-
18991759
proc getAggregatedAttestationV2*(
19001760
vc: ValidatorClientRef,
19011761
slot: Slot,

beacon_chain/validator_client/attestation_service.nim

Lines changed: 0 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -169,103 +169,6 @@ proc serveAggregateAndProofV2*(
169169
warn "Aggregated attestation was not accepted by beacon node"
170170
res
171171

172-
proc produceAndPublishAttestations*(
173-
service: AttestationServiceRef,
174-
slot: Slot,
175-
committee_index: CommitteeIndex,
176-
duties: seq[DutyAndProof]
177-
): Future[AttestationData] {.
178-
async: (raises: [CancelledError, ValidatorApiError]).} =
179-
doAssert(MAX_VALIDATORS_PER_COMMITTEE <= uint64(high(int)))
180-
let
181-
vc = service.client
182-
fork = vc.forkAtEpoch(slot.epoch)
183-
184-
let data = await vc.produceAttestationData(slot, committee_index,
185-
ApiStrategyKind.Best)
186-
187-
let registeredRes = vc.attachedValidators[].slashingProtection.withContext:
188-
var tmp: seq[RegisteredAttestation]
189-
for duty in duties:
190-
if (duty.data.slot != data.slot) or
191-
(uint64(duty.data.committee_index) != data.index):
192-
warn "Inconsistent validator duties during attestation signing",
193-
pubkey = shortLog(duty.data.pubkey),
194-
duty_slot = duty.data.slot,
195-
duty_index = duty.data.committee_index,
196-
attestation_slot = data.slot, attestation_index = data.index
197-
continue
198-
199-
let validator = vc.getValidatorForDuties(
200-
duty.data.pubkey, duty.data.slot).valueOr:
201-
continue
202-
203-
doAssert(validator.index.isSome())
204-
let validator_index = validator.index.get()
205-
206-
logScope:
207-
validator = validatorLog(validator)
208-
209-
# TODO: signing_root is recomputed in getAttestationSignature just after,
210-
# but not for locally attached validators.
211-
let
212-
signingRoot = compute_attestation_signing_root(
213-
fork, vc.beaconGenesis.genesis_validators_root, data)
214-
registered = registerAttestationInContext(
215-
validator_index, validator.pubkey, data.source.epoch,
216-
data.target.epoch, signingRoot)
217-
if registered.isErr():
218-
warn "Slashing protection activated for attestation",
219-
attestationData = shortLog(data),
220-
signingRoot = shortLog(signingRoot),
221-
badVoteDetails = $registered.error()
222-
continue
223-
224-
tmp.add(RegisteredAttestation(
225-
validator: validator,
226-
validator_index: validator_index,
227-
committee_index: duty.data.committee_index,
228-
index_in_committee: duty.data.validator_committee_index,
229-
committee_len: int duty.data.committee_length,
230-
data: data
231-
))
232-
tmp
233-
234-
if registeredRes.isErr():
235-
warn "Could not update slashing database, skipping attestation duties",
236-
error = registeredRes.error()
237-
else:
238-
let
239-
pendingAttestations = registeredRes[].mapIt(service.serveAttestation(it))
240-
statistics =
241-
block:
242-
var errored, succeed, failed = 0
243-
try:
244-
await allFutures(pendingAttestations)
245-
except CancelledError as exc:
246-
let pending = pendingAttestations
247-
.filterIt(not(it.finished())).mapIt(it.cancelAndWait())
248-
await noCancel allFutures(pending)
249-
raise exc
250-
251-
for future in pendingAttestations:
252-
if future.completed():
253-
if future.value:
254-
inc(succeed)
255-
else:
256-
inc(failed)
257-
else:
258-
inc(errored)
259-
(succeed, errored, failed)
260-
261-
let delay = vc.getDelay(slot.attestation_deadline(vc.timeParams))
262-
debug "Attestation statistics", total = len(pendingAttestations),
263-
succeed = statistics[0], failed_to_deliver = statistics[1],
264-
not_accepted = statistics[2], delay = delay, slot = slot,
265-
committee_index = committee_index, duties_count = len(duties)
266-
267-
data
268-
269172
proc produceAndPublishAttestationsV2*(
270173
service: AttestationServiceRef,
271174
slot: Slot,

0 commit comments

Comments
 (0)