-
Notifications
You must be signed in to change notification settings - Fork 820
Labels
Type: bugSomething isn't workingSomething isn't working
Description
Describe the bug
I have many problems to use Account.declare in v5.5.0.
Account.declare
do not acceptCairoContract
type, onlystring|CompiledContract
. It means thatSierraContractClass
is not authorized.
So, use of Provider.getClassAt() or Provider.getClassByHash() with a Cairo1 class do not allow to use the result inaccount.declare
.- If I try to declare a compressed Cairo 0(LegacyContractClass), my script is now failing. json-bigint library has been replaced by lossless-json : it generate a crash in parse ; lossless-json seems to not accept LegacyContractClass.program. Also very problematic.
To Reproduce
async function main() {
//initialize Provider with testnet2
const providerTestnet2 = new Provider({ sequencer: { network: constants.NetworkName.SN_GOERLI2 } });
console.log("Connected to testnet2.");
//initialize Provider with devnet
const providerDevnet = new Provider({ sequencer: { baseUrl: "http://127.0.0.1:5050" } });
console.log('Connected to devnet.');
// initialize existing predeployed account 0 of Devnet
const privateKey = "0xe3e70682c2094cac629f6fbed82c07cd";
const accountAddress = "0x7e00d496e324876bbc8531f2d9a82bf154d1a04a50218ee74cdd372f75a551a";
const account0 = new Account(providerDevnet, accountAddress, privateKey);
console.log('✅ OZ predeployed account 0 connected in devnet.');
// recover & save contract
const compressedContractProxy = await providerTestnet2.getClassByHash("0x025ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918");
fs.writeFileSync('./compiledContracts/ArgentXproxy_0_2_3_1_compressed.json', JSON.stringify(compressedContractProxy));
// declare in devnet
if ('sierra_program' in compressedContractProxy) { throw new Error("Cairo 1 compressed not authorized in Starknet.js v5.5.0") }
const progCompressed = compressedContractProxy.program;
// 🚨🚨🚨 Fail in v5.5.0 ; crash in lossless-json library
const declareResponse = await account0.declare({ contract: progCompressed });
console.log("clashHash =", declareResponse.class_hash);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Expected behavior
Account.declare to accept CairoContract
, and process it correctly.
Screenshots
SyntaxError: JSON value expected but got 'H' at position 0
at expectValue (/home/edmond/Documents/starknet/starknet.js-workshop-typescript/node_modules/lossless-json/lib/esm/parse.js:201:13)
at Object.t.parse (/home/edmond/Documents/starknet/starknet.js-workshop-typescript/node_modules/lossless-json/lib/esm/parse.js:36:3)
at parse (/home/edmond/Documents/starknet/starknet.js-workshop-typescript/node_modules/starknet/src/utils/json.ts:12:47)
at isSierra (/home/edmond/Documents/starknet/starknet.js-workshop-typescript/node_modules/starknet/src/utils/contract.ts:7:59)
at extractContractHashes (/home/edmond/Documents/starknet/starknet.js-workshop-typescript/node_modules/starknet/src/utils/contract.ts:16:7)
at Account.declare (/home/edmond/Documents/starknet/starknet.js-workshop-typescript/node_modules/starknet/src/account/default.ts:338:36)
at main (/home/edmond/Documents/starknet/starknet.js-workshop-typescript/src/scripts/mainnet/2b.recoverCompiledContract.ts:50:44)
Desktop (please complete the following information):
- Browser & version [e.g. chrome, safari, webworker]
- Node version [e.g. 16.0.1]
- Starknet.js version : V5.5.0
- Network [devnet, testnet] devnet 0.5.0
EdgarBarrantes
Metadata
Metadata
Labels
Type: bugSomething isn't workingSomething isn't working