Skip to content

Commit 9767d5e

Browse files
committed
u128
1 parent 9f5cb88 commit 9767d5e

File tree

11 files changed

+28
-21
lines changed

11 files changed

+28
-21
lines changed

.github/workflows/circuits_e2e.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ on:
88
jobs:
99
test:
1010
name: Circuits E2E Tests
11-
runs-on:
12-
group: Default Larger Runners
11+
runs-on: ubuntu-latest
1312
environment: CI
1413
env:
1514
ETHEREUM_JSON_RPC_API_URL: ${{ secrets.ETHEREUM_JSON_RPC_API_URL }}

.github/workflows/contract_test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
fail-fast: true
1616

1717
name: Foundry project
18-
runs-on: 32-core-ubuntu-runner
18+
runs-on: ubuntu-latest
1919
steps:
2020
- uses: actions/checkout@v4
2121
with:

.github/workflows/e2e_test.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ on:
99
jobs:
1010
test:
1111
name: E2E Tests
12-
runs-on:
13-
group: Default Larger Runners
12+
runs-on: ubuntu-latest
1413
environment: CI
1514
env:
1615
ETHEREUM_JSON_RPC_API_URL: ${{ secrets.ETHEREUM_JSON_RPC_API_URL }}

ethereum/oracles/src/noir/oracles/common/encode.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,20 @@ export function encodeField(arg: number | bigint): Hex {
2323
return `0x${hex}`;
2424
}
2525

26-
export function encodeU128(arg: bigint): Hex[] {
26+
export function encodeU128Split(arg: bigint): Hex[] {
2727
assert(arg < U128_MAX, 'U128 overflow');
2828
assert(arg >= 0, 'U128 underflow');
2929

3030
return [encodeField(arg / (U64_MAX + 1n)), encodeField(arg % (U64_MAX + 1n))];
3131
}
3232

33+
export function encodeU128(arg: bigint): Hex {
34+
assert(arg < U128_MAX, 'U128 overflow');
35+
assert(arg >= 0, 'U128 underflow');
36+
37+
return encodeField(arg);
38+
}
39+
3340
export function encodeBytes32(value: bigint): Hex[] {
3441
return encodeBytes(value, BYTES32_LEN);
3542
}

ethereum/oracles/src/noir/oracles/rpc/transactionOracle.int.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ describe('getTransactionOracle', () => {
3131
'0x40','0xdf','0xf8','0x3e','0x82','0x64','0xec','0xf9','0x86','0xca'
3232
]);
3333
expect(txWithProof[OFFSETS.TO_IS_SOME]).toStrictEqual('0x01');
34-
expect(txWithProof[OFFSETS.VALUE_HI]).toStrictEqual('0x');
35-
expect(txWithProof[OFFSETS.VALUE_LO]).toStrictEqual('0x');
34+
expect(txWithProof[OFFSETS.VALUE]).toStrictEqual('0x');
3635
// prettier-ignore
3736
expect(txWithProof[OFFSETS.DATA]).toStrictEqual(padArray([
3837
'0xa9','0x05','0x9c','0xbb','0x00','0x00','0x00','0x00','0x00','0x00',

ethereum/oracles/src/noir/oracles/rpc/transactionOracle.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ export enum OFFSETS {
1313
GAS_LIMIT,
1414
TO,
1515
TO_IS_SOME,
16-
VALUE_HI,
17-
VALUE_LO,
16+
VALUE,
1817
DATA,
1918
DATA_LEN,
2019
V,

ethereum/oracles/src/noir/oracles/rpc/transactionOracle/encode.test.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ describe('TransactionOracle encode', () => {
1818
expect(noirTransaction[TX_OFFSETS.NONCE]).toStrictEqual('0x');
1919
expect(noirTransaction[TX_OFFSETS.GAS_LIMIT]).toStrictEqual('0x5a3c');
2020
expect(noirTransaction[TX_OFFSETS.TO_IS_SOME]).toStrictEqual('0x01');
21-
expect(noirTransaction[TX_OFFSETS.VALUE_HI]).toStrictEqual('0x');
22-
expect(noirTransaction[TX_OFFSETS.VALUE_LO]).toStrictEqual('0x038d7ea4c68000');
21+
expect(noirTransaction[TX_OFFSETS.VALUE]).toStrictEqual('0x038d7ea4c68000');
2322
expect(noirTransaction[TX_OFFSETS.DATA_LEN]).toStrictEqual('0x');
2423
});
2524

@@ -35,8 +34,7 @@ describe('TransactionOracle encode', () => {
3534
expect(noirTransaction[TX_OFFSETS.NONCE]).toStrictEqual('0x485a');
3635
expect(noirTransaction[TX_OFFSETS.GAS_LIMIT]).toStrictEqual('0x0493e0');
3736
expect(noirTransaction[TX_OFFSETS.TO_IS_SOME]).toStrictEqual('0x01');
38-
expect(noirTransaction[TX_OFFSETS.VALUE_HI]).toStrictEqual('0x');
39-
expect(noirTransaction[TX_OFFSETS.VALUE_LO]).toStrictEqual('0x');
37+
expect(noirTransaction[TX_OFFSETS.VALUE]).toStrictEqual('0x');
4038
// prettier-ignore
4139
expect(noirTransaction[TX_OFFSETS.DATA]).toStrictEqual(padArray([
4240
'0xa9','0x05','0x9c','0xbb','0x00','0x00','0x00','0x00','0x00','0x00',

ethereum/oracles/src/noir/oracles/rpc/transactionOracle/encode.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ export enum TX_OFFSETS {
1414
GAS_LIMIT,
1515
TO,
1616
TO_IS_SOME,
17-
VALUE_HI,
18-
VALUE_LO,
17+
VALUE,
1918
DATA,
2019
DATA_LEN
2120
}
@@ -34,7 +33,7 @@ export function encodeTx(transaction: Transaction): ForeignCallOutput[] {
3433
const r = encodeHex(transaction.r);
3534
const s = encodeHex(transaction.s);
3635

37-
return [nonce, gasLimit, to, toIsSome, ...value, data, data_len, v, r, s];
36+
return [nonce, gasLimit, to, toIsSome, value, data, data_len, v, r, s];
3837
}
3938

4039
export function encodeTxProof(txProof: Proof): ForeignCallOutput {

ethereum/oracles/src/noir/oracles/server/app.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const HTTP_STATUS_NO_CONTENT = 204;
1515
const jsonRPCServer: TypedJSONRPCServer<JSONRPCServerMethods, ServerParams> = new JSONRPCServer();
1616

1717
// New Nargo 1.0+ protocol: resolve_foreign_call
18+
// @ts-ignore - resolve_foreign_call has a different signature than other methods
1819
jsonRPCServer.addMethod('resolve_foreign_call', async (params: any, serverParams: ServerParams) => {
1920
const { function: functionName, inputs } = params[0];
2021

ethereum/oracles/src/noir/oracles/server/handlers.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ForeignCallResult, ForeignCallParams } from './types.js';
1+
import { ForeignCallResult, ForeignCallParams, ResolveForeignCallResult } from './types.js';
22
import { decodeNoirArguments, encodeForeignCallResult, encodeForeignCallResultNew } from './encode.js';
33
import { MultiChainClient } from '../../../ethereum/client.js';
44
import { Oracle, RpcOracle } from '../types.js';
@@ -12,7 +12,8 @@ import { Oracle, RpcOracle } from '../types.js';
1212
// This needs to be a type, not an interface because TypedJSONRPCServer requires it to have an index signature.
1313
/* eslint-disable-next-line @typescript-eslint/consistent-type-definitions */
1414
export type JSONRPCServerMethods = {
15-
resolve_foreign_call(params: any, serverParams: ServerParams): Promise<ForeignCallResult>;
15+
// Note: resolve_foreign_call is not included here as it has a different signature (requires serverParams)
16+
// It's added directly in app.ts using jsonRPCServer.addMethod()
1617
get_header(params: ForeignCallParams): ForeignCallResult;
1718
get_account(params: ForeignCallParams): ForeignCallResult;
1819
get_proof(params: ForeignCallParams): ForeignCallResult;
@@ -42,7 +43,7 @@ export async function getOracleHandler(oracle: Oracle, params: ForeignCallParams
4243
}
4344

4445
// New protocol handler (for resolve_foreign_call)
45-
export async function getOracleHandlerNew(oracle: Oracle, params: ForeignCallParams): Promise<{ values: (string | string[])[] }> {
46+
export async function getOracleHandlerNew(oracle: Oracle, params: ForeignCallParams): Promise<ResolveForeignCallResult> {
4647
const noirArguments = decodeNoirArguments(params);
4748
const noirOutputs = await oracle(noirArguments);
4849
const result = encodeForeignCallResultNew(noirOutputs);
@@ -53,7 +54,7 @@ export async function getRpcOracleHandlerNew(
5354
rpcOracle: RpcOracle,
5455
params: ForeignCallParams,
5556
{ client }: ServerParams
56-
): Promise<{ values: (string | string[])[] }> {
57+
): Promise<ResolveForeignCallResult> {
5758
const oracle = rpcOracle.bind(null, client);
5859
return getOracleHandlerNew(oracle, params);
5960
}

0 commit comments

Comments
 (0)