Skip to content

Commit

Permalink
ref: remove fallback calls
Browse files Browse the repository at this point in the history
  • Loading branch information
irisdv committed May 1, 2024
1 parent 70f20f3 commit 21d07b1
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 112 deletions.
1 change: 0 additions & 1 deletion packages/core/__test__/profile_mainnet.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,6 @@ describe("test starknetid.js sdk on mainnet", () => {
"0x0097095403155fcbFA72AA53270D6eDd0DCC830bBb9264455517DF3e508633E5", // nothing
"0x007b275f7524f39b99a51c7134bc44204fedc5dd1e982e920eb2047c6c2a71f0", // everai pfp
]);
console.log("profiles", profiles);
const expectedProfiles = [
{ name: "iris.stark" },
{ name: "rmz.stark" },
Expand Down
27 changes: 27 additions & 0 deletions packages/core/__test__/resolve_sepolia.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { Account, Provider, constants } from "starknet";
import { StarknetIdNavigator } from "../src";

describe("test starknetid.js sdk on sepolia", () => {
jest.setTimeout(90000000);
const provider = new Provider({
rpc: {
nodeUrl: "https://sepolia.rpc.starknet.id",
},
});

describe("Test offchain resolving demo", () => {
test("iris.notion.stark resolve to the right address", async () => {
const starknetIdNavigator = new StarknetIdNavigator(
provider,
constants.StarknetChainId.SN_SEPOLIA,
);
expect(starknetIdNavigator).toBeInstanceOf(StarknetIdNavigator);
const address = await starknetIdNavigator.getAddressFromStarkName(
"iris.notion.stark",
);
expect(address).toBe(
"0x220756d68c9b120fcfc539510fc474359bea9f8bc73e8af3a23a8276d571faf",
);
});
});
});
32 changes: 6 additions & 26 deletions packages/core/src/starknetIdNavigator/default.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import {
import { StarknetIdNavigatorInterface } from "./interface";
import { StarkProfile, StarknetIdContracts } from "../types";
import {
executeMulticallWithFallback,
extractArrayFromErrorMessage,
fetchImageUrl,
getProfileDataCalldata,
Expand Down Expand Up @@ -160,17 +159,8 @@ export class StarknetIdNavigator implements StarknetIdNavigatorInterface {
);

try {
let { initialCalldata, fallbackCalldata } = getStarknamesCalldata(
addresses,
namingContract,
);

const data = await executeMulticallWithFallback(
contract,
"aggregate",
initialCalldata,
fallbackCalldata,
);
let calldata = getStarknamesCalldata(addresses, namingContract);
const data = await contract.call("aggregate", [calldata]);

let result: string[] = [];
if (Array.isArray(data)) {
Expand Down Expand Up @@ -492,20 +482,15 @@ export class StarknetIdNavigator implements StarknetIdNavigatorInterface {
);

try {
const { initialCalldata, fallbackCalldata } = getProfileDataCalldata(
const calldata = getProfileDataCalldata(
address,
namingContract,
identityContract,
verifierContract,
pfpVerifierContract,
popVerifierContract,
);
const data = await executeMulticallWithFallback(
multicallContract,
"aggregate",
initialCalldata,
fallbackCalldata,
);
const data = await multicallContract.call("aggregate", [calldata]);

if (Array.isArray(data)) {
const name = decodeDomain(data[0].slice(1));
Expand Down Expand Up @@ -584,7 +569,7 @@ export class StarknetIdNavigator implements StarknetIdNavigatorInterface {

try {
const nbInstructions = 5;
const { initialCalldata, fallbackCalldata } = getStarkProfilesCalldata(
const calldata = getStarkProfilesCalldata(
addresses,
namingContract,
identityContract,
Expand All @@ -593,12 +578,7 @@ export class StarknetIdNavigator implements StarknetIdNavigatorInterface {
blobbertContract,
);

const data = await executeMulticallWithFallback(
multicallContract,
"aggregate",
initialCalldata,
fallbackCalldata,
);
const data = await multicallContract.call("aggregate", [calldata]);

if (Array.isArray(data)) {
let results: StarkProfile[] = [];
Expand Down
129 changes: 44 additions & 85 deletions packages/core/src/starknetIdNavigator/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,24 +79,24 @@ export const notEqual = (call: number, pos: number, value: number) => {
});
};

export const executeMulticallWithFallback = async (
contract: Contract,
functionName: string,
initialCalldata: RawArgsArray,
fallbackCalldata: RawArgsArray,
) => {
try {
// Attempt the initial call
return await contract.call(functionName, [initialCalldata]);
} catch (initialError) {
// If the initial call fails, try with the fallback calldata
try {
return await contract.call(functionName, [fallbackCalldata]);
} catch (fallbackError) {
throw fallbackError; // Re-throw to handle outside
}
}
};
// export const executeMulticallWithFallback = async (
// contract: Contract,
// functionName: string,
// initialCalldata: RawArgsArray,
// fallbackCalldata: RawArgsArray,
// ) => {
// try {
// // Attempt the initial call
// return await contract.call(functionName, [initialCalldata]);
// } catch (initialError) {
// // If the initial call fails, try with the fallback calldata
// try {
// return await contract.call(functionName, [fallbackCalldata]);
// } catch (fallbackError) {
// throw fallbackError; // Re-throw to handle outside
// }
// }
// };

//
// composable multicall calldata
Expand All @@ -105,29 +105,19 @@ export const executeMulticallWithFallback = async (
export const getStarknamesCalldata = (
addresses: string[],
namingContract: string,
): {
initialCalldata: RawArgsArray;
fallbackCalldata: RawArgsArray;
} => {
let initialCalldata: RawArgsArray = [];
let fallbackCalldata: RawArgsArray = [];
): RawArgsArray => {
let calldata: RawArgsArray = [];

addresses.forEach((address) => {
initialCalldata.push({
calldata.push({
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address), hardcoded("0")],
});

fallbackCalldata.push({
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address)],
});
});

return { initialCalldata, fallbackCalldata };
return calldata;
};

export const getStarkProfilesCalldata = (
Expand All @@ -137,32 +127,19 @@ export const getStarkProfilesCalldata = (
pfpVerifierContract: string,
utilsMulticallContract: string,
blobbertContract: string,
): {
initialCalldata: RawArgsArray;
fallbackCalldata: RawArgsArray;
} => {
): RawArgsArray => {
let calldata: RawArgsArray = [];
let uriCalldata: RawArgsArray = [];
let fallback: RawArgsArray = [];
const nbInstructions = 5;

addresses.forEach((address, index) => {
// We will first try to pass a hint
calldata.push({
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address), hardcoded("0")],
});
// if it fails we will fallback to not passing it
fallback.push({
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address)],
});

const calls = [
calldata.push(
{
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address), hardcoded("0")],
},
{
execution: staticExecution(),
to: hardcoded(namingContract),
Expand Down Expand Up @@ -203,9 +180,7 @@ export const getStarkProfilesCalldata = (
hardcoded(blobbertContract),
],
},
];
calldata.push(...calls);
fallback.push(...calls);
);

// we only fetch the uri if the nft_pp_contract is not 0 and is not the blobbert contract
// we will handle blobbert token uris offchain
Expand All @@ -220,10 +195,7 @@ export const getStarkProfilesCalldata = (
});
});

return {
initialCalldata: [...calldata, ...uriCalldata],
fallbackCalldata: [...fallback, ...uriCalldata],
};
return [...calldata, ...uriCalldata];
};

export const getProfileDataCalldata = (
Expand All @@ -233,27 +205,16 @@ export const getProfileDataCalldata = (
verifierContract: string,
pfpVerifierContract: string,
popVerifierContract: string,
): {
initialCalldata: RawArgsArray;
fallbackCalldata: RawArgsArray;
} => {
let initialCalldata: RawArgsArray = [];
let fallbackCalldata: RawArgsArray = [];

initialCalldata.push({
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address), hardcoded("0")],
});
fallbackCalldata.push({
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address)],
});
): RawArgsArray => {
let calldata: RawArgsArray = [];

const calls = [
calldata.push(
{
execution: staticExecution(),
to: hardcoded(namingContract),
selector: hardcoded(hash.getSelectorFromName("address_to_domain")),
calldata: [hardcoded(address), hardcoded("0")],
},
{
execution: staticExecution(),
to: hardcoded(namingContract),
Expand Down Expand Up @@ -336,11 +297,9 @@ export const getProfileDataCalldata = (
selector: hardcoded(hash.getSelectorFromName("tokenURI")),
calldata: [reference(7, 1), reference(7, 2)],
},
];
initialCalldata.push(...calls);
fallbackCalldata.push(...calls);
);

return { initialCalldata, fallbackCalldata };
return calldata;
};

//
Expand Down

0 comments on commit 21d07b1

Please sign in to comment.