MINT_TO来自token.sol示例来自Solang的示例throw新错误(未知签名者:$ {signature.publickey.tostring()});

发布于 2025-02-09 05:07:40 字数 4749 浏览 1 评论 0 原文

我试图用solang示例合同造成造型:

contract.functions.mint_to thof thorforror 未知签名者:$ {signature.publickey.tostring() /代码>

代码错误在哪里?

我的JS代码从 这里:

const web3     = require('@solana/web3.js');
const {  PublicKey, clusterApiUrl, Connection, LAMPORTS_PER_SOL, Keypair } = require('@solana/web3.js');
const { Contract, Program, publicKeyToHex }     = require('@solana/solidity');
const { readFileSync }                          = require('fs');
const { getOrCreateAssociatedTokenAccount, createMint, TOKEN_PROGRAM_ID, mintTo , splToken} = require('@solana/spl-token');

const SPL_TOKEN_ABI = JSON.parse(readFileSync('./Token.abi', 'utf8'));
const PROGRAM_SO = readFileSync('./bundle.so');


(async function () {
   console.log('Connecting to your local Solana node ...');
   const connection = new Connection(clusterApiUrl('devnet'), 'confirmed');

    const payer            = Keypair.generate();
    const freezeAuthority  = Keypair.generate();
    const mintAuthority    = Keypair.generate();
    const program          = Keypair.generate();
    const storage          = Keypair.generate();
    console.log('address payer: ' + payer.publicKey.toBase58());

   console.log('Airdropping SOL to a new wallet payer.publicKey ...');
   const signature = await connection.requestAirdrop(payer.publicKey, 1.5 * LAMPORTS_PER_SOL);
   await connection.confirmTransaction(signature, 'confirmed');

   console.log('new Contract ...');

   const contract = new Contract(connection, program.publicKey, storage.publicKey, SPL_TOKEN_ABI, payer);
    
   console.log('address program.publicKey: ' + program.publicKey.toBase58());
   console.log('address storage.publicKey: ' + storage.publicKey.toBase58());

   await contract.load(program, PROGRAM_SO);

   await contract.deploy('Token', [], program, storage, 3096 *8);
   console.log('contract deployed ...');

    console.log('createMint ...');

    const mint = await createMint(
       connection,
       payer,
       mintAuthority.publicKey,
       freezeAuthority.publicKey,
       3
    );

    console.log('set_mint ...');
    await contract.functions.set_mint(publicKeyToHex(mint));

    console.log('getOrCreateAssociatedTokenAccount ...');
    const tokenAccount = await getOrCreateAssociatedTokenAccount(
            connection,
            payer,
            mint,
            payer.publicKey
      )

    console.log('address mint: '                    + mint.toBase58());
    console.log('address tokenAccount.address: '    + tokenAccount.address.toBase58());
    console.log('address mintAuthority.publicKey: ' + mintAuthority.publicKey.toBase58());
    console.log('address payer.publicKey: '         + payer.publicKey.toBase58());

    console.log('mint_to ...');
        await contract.functions.mint_to(
            publicKeyToHex(tokenAccount.address),
            publicKeyToHex(mintAuthority.publicKey),
            100000,
            {
                accounts: [TOKEN_PROGRAM_ID],
                writableAccounts: [mint, tokenAccount.address],
                signers: [mintAuthority]
            },
        );
})();
 

调用脚本后的错误日志:

/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2690
        throw new Error(`unknown signer: ${signature.publicKey.toString()}`);
              ^

Error: unknown signer: CKq7xZwFqbaJtcFCChWuYFzgZMEoYRMZPftxAi7JTQi7
    at Transaction.compileMessage (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2690:15)
    at Transaction._compile (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2753:26)
    at Transaction.sign (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2858:26)
    at Connection.sendTransaction (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:7382:21)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async sendAndConfirmTransaction (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:3133:21)

如何使用 https://github.com/hyperledger-labs/solang/blob/main/main/integration/solana/token.sol 智能合约?

谢谢您的任何帮助。

![整物在这里:]( https://i.sstatic.net/ngzm1.png )

I tried to mint token with solang example contract:
https://github.com/hyperledger-labs/solang/blob/main/integration/solana/token.sol

and at contract.functions.mint_to it throw error unknown signer: ${signature.publicKey.toString()

Where is the error in code?

My js code reworked from
https://github.com/hyperledger-labs/solang/blob/main/integration/solana/token.spec.ts
here:

const web3     = require('@solana/web3.js');
const {  PublicKey, clusterApiUrl, Connection, LAMPORTS_PER_SOL, Keypair } = require('@solana/web3.js');
const { Contract, Program, publicKeyToHex }     = require('@solana/solidity');
const { readFileSync }                          = require('fs');
const { getOrCreateAssociatedTokenAccount, createMint, TOKEN_PROGRAM_ID, mintTo , splToken} = require('@solana/spl-token');

const SPL_TOKEN_ABI = JSON.parse(readFileSync('./Token.abi', 'utf8'));
const PROGRAM_SO = readFileSync('./bundle.so');


(async function () {
   console.log('Connecting to your local Solana node ...');
   const connection = new Connection(clusterApiUrl('devnet'), 'confirmed');

    const payer            = Keypair.generate();
    const freezeAuthority  = Keypair.generate();
    const mintAuthority    = Keypair.generate();
    const program          = Keypair.generate();
    const storage          = Keypair.generate();
    console.log('address payer: ' + payer.publicKey.toBase58());

   console.log('Airdropping SOL to a new wallet payer.publicKey ...');
   const signature = await connection.requestAirdrop(payer.publicKey, 1.5 * LAMPORTS_PER_SOL);
   await connection.confirmTransaction(signature, 'confirmed');

   console.log('new Contract ...');

   const contract = new Contract(connection, program.publicKey, storage.publicKey, SPL_TOKEN_ABI, payer);
    
   console.log('address program.publicKey: ' + program.publicKey.toBase58());
   console.log('address storage.publicKey: ' + storage.publicKey.toBase58());

   await contract.load(program, PROGRAM_SO);

   await contract.deploy('Token', [], program, storage, 3096 *8);
   console.log('contract deployed ...');

    console.log('createMint ...');

    const mint = await createMint(
       connection,
       payer,
       mintAuthority.publicKey,
       freezeAuthority.publicKey,
       3
    );

    console.log('set_mint ...');
    await contract.functions.set_mint(publicKeyToHex(mint));

    console.log('getOrCreateAssociatedTokenAccount ...');
    const tokenAccount = await getOrCreateAssociatedTokenAccount(
            connection,
            payer,
            mint,
            payer.publicKey
      )

    console.log('address mint: '                    + mint.toBase58());
    console.log('address tokenAccount.address: '    + tokenAccount.address.toBase58());
    console.log('address mintAuthority.publicKey: ' + mintAuthority.publicKey.toBase58());
    console.log('address payer.publicKey: '         + payer.publicKey.toBase58());

    console.log('mint_to ...');
        await contract.functions.mint_to(
            publicKeyToHex(tokenAccount.address),
            publicKeyToHex(mintAuthority.publicKey),
            100000,
            {
                accounts: [TOKEN_PROGRAM_ID],
                writableAccounts: [mint, tokenAccount.address],
                signers: [mintAuthority]
            },
        );
})();
 

Error logs after calling script:

/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2690
        throw new Error(`unknown signer: ${signature.publicKey.toString()}`);
              ^

Error: unknown signer: CKq7xZwFqbaJtcFCChWuYFzgZMEoYRMZPftxAi7JTQi7
    at Transaction.compileMessage (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2690:15)
    at Transaction._compile (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2753:26)
    at Transaction.sign (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:2858:26)
    at Connection.sendTransaction (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:7382:21)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async sendAndConfirmTransaction (/home/alex/node_modules/@solana/web3.js/lib/index.cjs.js:3133:21)

How can I mint token with https://github.com/hyperledger-labs/solang/blob/main/integration/solana/token.sol smart contract?

Thank you for any help.

![Whole log is here: ] (https://i.sstatic.net/NGzM1.png)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白龙吟 2025-02-16 05:07:40

当我从锚点工作区中输入错误的程序时,我遇到了这个错误。由于版本一如既往,因此我不得不重复使用旧的 cargo.lock ,它可以复制其他所有内容。在我的测试中,我离开了:

const stakingprogram = adnakor.workspace.oldogram作为program<程序&gt ;;

而不是

const stakingprogram = archor.workspace.newprogram作为program<

I had this error when I impprted wrong program from anchor workspace. As the versions are broken as always, I had to reuse old cargo.lock that works and along with that copied everything else. In my tests I left:

const stakingProgram = anchor.workspace.Oldprogram as Program<Program>;

instead of

const stakingProgram = anchor.workspace.Newprogram as Program<Staking>;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文