Hi everyone,
I am adding an account using emulator / service account, and using the exact code provided on flow docs
- JS function returning a Promise returning txID:
const addAccounts = () => {
return fcl.send([
fcl.transaction`
import FungibleToken from ${process.env.REACT_APP_FUNGIBLE_CONTRACT}
import FlowToken from ${process.env.REACT_APP_FLOW_CONTRACT}
transaction {
prepare(signer: AuthAccount) {
let newAccount = AuthAccount(payer: signer)
let key = PublicKey(
publicKey: "949ab5529e09a2ddae62548413de7100ed849fb8a128edd1cb0fb121dc6bbe28dd5706f04727f2da434d93df6075655d493d40c2aca2ab859478e9995af54d45".decodeHex(),
signatureAlgorithm: SignatureAlgorithm.ECDSA_P256
)
newAccount.keys.add(
publicKey: key,
hashAlgorithm: HashAlgorithm.SHA3_256,
weight: 1000.0
)
}
}
`,
fcl.proposer(fcl.authz),
fcl.payer(fcl.authz),
fcl.authorizations([fcl.authz]),
fcl.limit(9999),
]).then((encodedData) => {
console.log(encodedData)
return fcl.decode(encodedData).then(txId => {
return txId;
});
}).catch((error) => {
console.error("Add Accounts", error);
return error;
});
}
- using fcl subscribe to follow the transaction state:
fcl.tx(txId).subscribe((status) => this.checkTxStatus(status, txId));
ISSUES:
transaction will be sealed, account will be created, emulator do not display any error, but the fcl subscribe call will fail:
sdk.module.js:1 Uncaught (in promise) Error: Undefined Decoder Error: Enum@publicKey.signatureAlgorithm
WEIRD PART:
If i am removing the part adding a key to the new account:
// newAccount.keys.add(
// publicKey: key,
// hashAlgorithm: HashAlgorithm.SHA3_256,
// weight: 1000.0
// )
then everything is fine, the account is added (with no key), emulator display no error and fcl subscribe display no error
It sounds like fcl.subscribe is somehow jumping signatures from the transaction signer public key to the new added account public key ???
Thanks to anyone for helping