Closed alexcambose1 closed 1 month ago
hey thanks for reporting this, can reproduce. looking into a fix.
I have had similar issues. In my case I suspect it is due to the use of msg.sender
in _hashContract
. This value may change depending on how the transaction is submitted, e.g. when using a paymaster for sponsored transactions.
I we plan to deprecate this function due to this and other updates which make it harder to determine the final address.
hey weve just pushed a fix for this. we still need to update the docs, but if you get @zoralabs/protocol-sdk@0.80
it will have this fix.
Couple things to note:
creatorClient.create1155
now only works for new contracts
to add a token to an existing contract, use creatorClient.create1155OnExistingContract
create new 1155 and token:
import { createCreatorClient } from "@zoralabs/protocol-sdk";
import { publicClient, walletClient, chainId, creatorAccount } from "./config";
const creatorClient = createCreatorClient({ chainId, publicClient });
const { parameters, contractAddress } = await creatorClient.create1155({
// by providing a contract creation config, the contract will be created
// if it does not exist at a deterministic address
contract: {
// contract name
name: "testContract",
// contract metadata uri
uri: "ipfs://DUMMY/contract.json",
},
token: {
tokenMetadataURI: "ipfs://DUMMY/token.json",
},
// account to execute the transaction (the creator)
account: creatorAccount,
// how many tokens to mint to the creator upon token creation
});
// simulate the transaction
const { request } = await publicClient.simulateContract(parameters);
// execute the transaction
await walletClient.writeContract(request);
export { contractAddress };
create token on existing contract:
const { parameters } = await creatorClient.create1155OnExistingContract({
// by providing a contract address, the token will be created on an existing contract
// at that address
contractAddress,
token: {
// token metadata uri
tokenMetadataURI: "ipfs://DUMMY/token.json",
},
// account to execute the transaction (the creator)
account: creatorAccount,
});
// simulate the transaction
const { request } = await publicClient.simulateContract(parameters);
// execute the transaction
const hash = await walletClient.writeContract(request);
// wait for the response
await publicClient.waitForTransactionReceipt({ hash });
Hey, I’m seeing an issue with the getContractInfo function from the SDK where the returned address is different than the one that actually the deployed contract has. For example the one in the screenshot is the generated one 0xEe94679F9857d32269ed890470b245b5Aa12a18 but actually it ends up as https://basescan.org/token/0xa289322757a36a0e1b61ee7f83e966e9b3057561 after deployment (or from the
SetupNewContract
event)