From 5bd305339b5b2e87a877dc423d121436dbb13b98 Mon Sep 17 00:00:00 2001 From: Adam Jeffries <896669+adamjeffries@users.noreply.github.com> Date: Wed, 1 Sep 2021 11:21:27 -0500 Subject: [PATCH 01/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e14383c..44d5801 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Metaplex is comprised of two core components: an on-chain program, and a self-ho If you want to deep dive on the Architecture, you can do so here: -https://www.notion.so/Metaplex-Developer-Guide-afefbc19841744c28587ab948a08cfac +https://docs.metaplex.com/ ## Installing From e2acaae9f22d521cbd63246f288cce61f38e52ca Mon Sep 17 00:00:00 2001 From: nftintern <89903221+nftintern@users.noreply.github.com> Date: Wed, 1 Sep 2021 12:26:34 -0500 Subject: [PATCH 02/14] correction: tx -> tx['txid']; also remove duplicate @solana/web3.js package that was causing name collision (#270) --- js/packages/cli/package.json | 1 - js/packages/cli/src/cli.ts | 3 ++- js/yarn.lock | 20 -------------------- 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/js/packages/cli/package.json b/js/packages/cli/package.json index 67591e7..5e27ceb 100644 --- a/js/packages/cli/package.json +++ b/js/packages/cli/package.json @@ -21,7 +21,6 @@ }, "dependencies": { "@project-serum/anchor": "^0.13.2", - "@solana/web3.js": "^1.24.1", "arweave": "^1.10.16", "bn.js": "^5.2.0", "commander": "^8.1.0", diff --git a/js/packages/cli/src/cli.ts b/js/packages/cli/src/cli.ts index d81856a..a124b35 100755 --- a/js/packages/cli/src/cli.ts +++ b/js/packages/cli/src/cli.ts @@ -389,11 +389,12 @@ program [], 'single', ); + console.info('transaction for arweave payment:', tx); // data.append('tags', JSON.stringify(tags)); // payment transaction const data = new FormData(); - data.append('transaction', tx); + data.append('transaction', tx['txid']); data.append('env', ENV); data.append('file[]', fs.createReadStream(image), `image.png`); data.append('file[]', manifestBuffer, 'metadata.json'); diff --git a/js/yarn.lock b/js/yarn.lock index 8c895ae..fbf1d7a 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -2211,26 +2211,6 @@ superstruct "^0.14.2" tweetnacl "^1.0.0" -"@solana/web3.js@^1.24.1": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.24.1.tgz#1fb29f344454669183206f452ab3b8792567cade" - integrity sha512-XImMWAvjcXteMQwe1FFjoe6u72xmcu+UYobPIxLEMX29XXWVTalyYRKBXvcOXwz6DliTYnFXmncNEwUDEFFHGg== - dependencies: - "@babel/runtime" "^7.12.5" - "@solana/buffer-layout" "^3.0.0" - bn.js "^5.0.0" - borsh "^0.4.0" - bs58 "^4.0.1" - buffer "6.0.1" - crypto-hash "^1.2.2" - jayson "^3.4.4" - js-sha3 "^0.8.0" - node-fetch "^2.6.1" - rpc-websockets "^7.4.2" - secp256k1 "^4.0.2" - superstruct "^0.14.2" - tweetnacl "^1.0.0" - "@testing-library/dom@*", "@testing-library/dom@^7.28.1": version "7.31.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.0.tgz#938451abd3ca27e1b69bb395d4a40759fd7f5b3b" From 06534bf5bec431a4b43dfeff95b0e84e69fc420d Mon Sep 17 00:00:00 2001 From: 0xsolsurfer <89321164+0xsolsurfer@users.noreply.github.com> Date: Wed, 1 Sep 2021 10:31:02 -0700 Subject: [PATCH 04/14] Update deploy.md for Vercel deploys (#247) Updates deploy.md to include a missing step, enabling Vercel deploys using next.js. --- docs/deploy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deploy.md b/docs/deploy.md index 2dd3590..7fec7ab 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -52,7 +52,7 @@ yarn deploy ## Vercel -To publish the Metaplex app to Vercel, you first need to visit [https://vercel.com/](https://vercel.com/) and create a new project linked to your github repo. +To publish the Metaplex app to Vercel, you first need to visit [https://vercel.com/](https://vercel.com/) and create a new project linked to your github repo. Then, create a `pages/` directory under `js`. After that, configure this project with the following settings: From f98142b182aa4c1c5895cebd3430b564da2b567b Mon Sep 17 00:00:00 2001 From: Jordan Prince Date: Wed, 1 Sep 2021 18:02:50 -0500 Subject: [PATCH 05/14] Update .env --- js/packages/web/.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/packages/web/.env b/js/packages/web/.env index 9d5a95c..f01fb3a 100644 --- a/js/packages/web/.env +++ b/js/packages/web/.env @@ -1,3 +1,3 @@ -REACT_APP_STORE_OWNER_ADDRESS_ADDRESS=CduMjFZLBeg3A9wMP3hQCoU1RQzzCpgSvQNXfCi1GCSB +REACT_APP_STORE_OWNER_ADDRESS_ADDRESS= REACT_APP_STORE_ADDRESS= REACT_APP_BIG_STORE=FALSE From c09c96e58c5ec9fc5bb66b49f626192956c96aae Mon Sep 17 00:00:00 2001 From: Slavomir Date: Thu, 2 Sep 2021 18:09:50 +0300 Subject: [PATCH 06/14] Fix Anchor.toml (#272) --- rust/Anchor.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/Anchor.toml b/rust/Anchor.toml index 76a873b..829f7c0 100644 --- a/rust/Anchor.toml +++ b/rust/Anchor.toml @@ -3,7 +3,7 @@ url = "https://anchor.projectserum.com" [provider] cluster = "localnet" -wallet = "/Users/jprince/.config/solana/id.json" +wallet = "~/.config/solana/id.json" [scripts] test = "mocha -t 1000000 tests/" From 9d9d9d93b105bb3aa441bb7295ed5540cb3749f2 Mon Sep 17 00:00:00 2001 From: lpeace <46713580+superb20@users.noreply.github.com> Date: Fri, 3 Sep 2021 00:10:44 +0900 Subject: [PATCH 07/14] Fix example link (#252) --- rust/token-metadata/program/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/token-metadata/program/README.md b/rust/token-metadata/program/README.md index 251ce75..034019c 100644 --- a/rust/token-metadata/program/README.md +++ b/rust/token-metadata/program/README.md @@ -16,7 +16,7 @@ The Token Metadata Program's source is available on [github](https://github.com/metaplex-foundation/metaplex) There is also an example Rust client located at -[github](https://github.com/metaplex-foundation/metaplex/tree/master/token_metadata/test/src/main.rs) +[github](https://github.com/metaplex-foundation/metaplex/tree/master/rust/token-metadata/test/src/main.rs) that can be perused for learning and run if desired with `cargo run --bin spl-token-metadata-test-client`. It allows testing out a variety of scenarios. ## Interface From 617d197e8433322a6e625929f6c9402c642247d2 Mon Sep 17 00:00:00 2001 From: Koenrad MacBride Date: Thu, 2 Sep 2021 09:18:13 -0700 Subject: [PATCH 08/14] Fix/candy machine cli (#280) * fix: stringify tx object * add: log the CM publicKey * mod: mine_one_token ty Dad! * remove: built js file (i m smurt) --- js/packages/cli/src/cli.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/js/packages/cli/src/cli.ts b/js/packages/cli/src/cli.ts index a124b35..6e18fc3 100755 --- a/js/packages/cli/src/cli.ts +++ b/js/packages/cli/src/cli.ts @@ -611,12 +611,12 @@ program }, ); - console.log('Done'); + console.log(`Done: CANDYMACHINE: ${candyMachine.toBase58()}`); }); program - .command('mint_token_as_candy_machine_owner') - .option('-k, --keypair ', 'Solana wallet') + .command('mint_one_token') + .option('-k, --keypair ', `The purchaser's wallet key`) .option('-c, --cache-name ', 'Cache file name') .action(async (directory, cmd) => { const solConnection = new anchor.web3.Connection( @@ -649,6 +649,7 @@ program config, cachedContent.program.uuid, ); + const candy = await anchorProgram.account.candyMachine.fetch(candyMachine); const metadata = await getMetadata(mint.publicKey); const masterEdition = await getMasterEdition(mint.publicKey); const tx = await anchorProgram.rpc.mintNft({ @@ -656,7 +657,8 @@ program config: config, candyMachine: candyMachine, payer: walletKey.publicKey, - wallet: walletKey.publicKey, + //@ts-ignore + wallet: candy.wallet, mint: mint.publicKey, metadata, masterEdition, From 0b064b6df49eb5b94f21796a1b04d223a921f16d Mon Sep 17 00:00:00 2001 From: Jordan Prince Date: Fri, 3 Sep 2021 15:38:03 -0500 Subject: [PATCH 09/14] Fix 10k error (#287) --- rust/nft-candy-machine/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/nft-candy-machine/src/lib.rs b/rust/nft-candy-machine/src/lib.rs index 1bb60a9..cc55bf4 100644 --- a/rust/nft-candy-machine/src/lib.rs +++ b/rust/nft-candy-machine/src/lib.rs @@ -430,7 +430,7 @@ pub struct InitializeCandyMachine<'info> { #[derive(Accounts)] #[instruction(data: ConfigData)] pub struct InitializeConfig<'info> { - #[account(mut, constraint= config.to_account_info().owner == program_id && config.to_account_info().data_len() > CONFIG_ARRAY_START+4+(data.max_number_of_lines as usize)*CONFIG_LINE_SIZE + 4 + (data.max_number_of_lines.checked_div(8).ok_or(ErrorCode::NumericalOverflowError)? as usize))] + #[account(mut, constraint= config.to_account_info().owner == program_id && config.to_account_info().data_len() >= CONFIG_ARRAY_START+4+(data.max_number_of_lines as usize)*CONFIG_LINE_SIZE + 4 + (data.max_number_of_lines.checked_div(8).ok_or(ErrorCode::NumericalOverflowError)? as usize))] config: AccountInfo<'info>, #[account(constraint= authority.data_is_empty() && authority.lamports() > 0 )] authority: AccountInfo<'info>, From 14401e878d36cac16c0ba4e6b606420c29eeed08 Mon Sep 17 00:00:00 2001 From: Jordan Prince Date: Fri, 3 Sep 2021 18:58:43 -0500 Subject: [PATCH 10/14] feat: mint editions into wallet (#289) feat(ArtMinting): add mint destination address validation feat(ArtMinting): add cofetti feat(ArtMinting): add remounting logic chore(mint editions): upodate types chore(art minting): update imports Co-authored-by: shotgunofdeath <42133844+shotgunofdeath@users.noreply.github.com> --- .../actions/createMintAndAccountWithOne.ts | 65 +++++ .../web/src/actions/mintEditionsIntoWallet.ts | 106 ++++++++ js/packages/web/src/actions/sendRedeemBid.ts | 59 +---- .../setupMintEditionIntoWalletInstructions.ts | 58 ++++ .../web/src/components/ArtMinting/index.tsx | 248 ++++++++++++++++++ js/packages/web/src/views/art/index.tsx | 46 +++- 6 files changed, 510 insertions(+), 72 deletions(-) create mode 100644 js/packages/web/src/actions/createMintAndAccountWithOne.ts create mode 100644 js/packages/web/src/actions/mintEditionsIntoWallet.ts create mode 100644 js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts create mode 100644 js/packages/web/src/components/ArtMinting/index.tsx diff --git a/js/packages/web/src/actions/createMintAndAccountWithOne.ts b/js/packages/web/src/actions/createMintAndAccountWithOne.ts new file mode 100644 index 0000000..ca16b7d --- /dev/null +++ b/js/packages/web/src/actions/createMintAndAccountWithOne.ts @@ -0,0 +1,65 @@ +import { Keypair, TransactionInstruction } from '@solana/web3.js'; +import { Token } from '@solana/spl-token'; +import { + createAssociatedTokenAccountInstruction, + createMint, + findProgramAddress, + programIds, + StringPublicKey, + toPublicKey, +} from '@oyster/common'; +import { WalletNotConnectedError } from '@solana/wallet-adapter-base'; + +export async function createMintAndAccountWithOne( + wallet: any, + receiverWallet: StringPublicKey, + mintRent: any, + instructions: TransactionInstruction[], + signers: Keypair[], +): Promise<{ mint: StringPublicKey; account: StringPublicKey }> { + if (!wallet.publicKey) throw new WalletNotConnectedError(); + + const mint = createMint( + instructions, + wallet.publicKey, + mintRent, + 0, + wallet.publicKey, + wallet.publicKey, + signers, + ); + + const PROGRAM_IDS = programIds(); + + const account: StringPublicKey = ( + await findProgramAddress( + [ + toPublicKey(receiverWallet).toBuffer(), + PROGRAM_IDS.token.toBuffer(), + mint.toBuffer(), + ], + PROGRAM_IDS.associatedToken, + ) + )[0]; + + createAssociatedTokenAccountInstruction( + instructions, + toPublicKey(account), + wallet.publicKey, + toPublicKey(receiverWallet), + mint, + ); + + instructions.push( + Token.createMintToInstruction( + PROGRAM_IDS.token, + mint, + toPublicKey(account), + wallet.publicKey, + [], + 1, + ), + ); + + return { mint: mint.toBase58(), account }; +} diff --git a/js/packages/web/src/actions/mintEditionsIntoWallet.ts b/js/packages/web/src/actions/mintEditionsIntoWallet.ts new file mode 100644 index 0000000..44df303 --- /dev/null +++ b/js/packages/web/src/actions/mintEditionsIntoWallet.ts @@ -0,0 +1,106 @@ +import BN from 'bn.js'; +import { Connection, Keypair, TransactionInstruction } from '@solana/web3.js'; +import { + sendTransactions, + sendTransactionWithRetry, + SequenceType, + StringPublicKey, + TokenAccount, +} from '@oyster/common'; +import { setupMintEditionIntoWalletInstructions } from './setupMintEditionIntoWalletInstructions'; +import { Art } from '../types'; +import { WalletAdapter } from '@solana/wallet-base'; + +// TODO: Refactor. Extract batching logic, +// as the similar one is used in settle.ts and convertMasterEditions.ts +const MINT_TRANSACTION_SIZE = 5; +const BATCH_SIZE = 10; + +export async function mintEditionsToWallet( + art: Art, + wallet: WalletAdapter, + connection: Connection, + mintTokenAccount: TokenAccount, + editions: number = 1, + mintDestination: StringPublicKey, +) { + let signers: Array> = []; + let instructions: Array> = []; + + let currSignerBatch: Array = []; + let currInstrBatch: Array = []; + + let mintEditionIntoWalletSigners: Keypair[] = []; + let mintEditionIntoWalletInstructions: TransactionInstruction[] = []; + + // TODO replace all this with payer account so user doesnt need to click approve several times. + + // Overall we have 10 parallel txns. + // That's what this loop is building. + for (let i = 0; i < editions; i++) { + console.log('Minting', i); + await setupMintEditionIntoWalletInstructions( + art, + wallet, + connection, + mintTokenAccount, + new BN(art.supply! + 1 + i), + mintEditionIntoWalletInstructions, + mintEditionIntoWalletSigners, + mintDestination, + ); + + if (mintEditionIntoWalletInstructions.length === MINT_TRANSACTION_SIZE) { + currSignerBatch.push(mintEditionIntoWalletSigners); + currInstrBatch.push(mintEditionIntoWalletInstructions); + mintEditionIntoWalletSigners = []; + mintEditionIntoWalletInstructions = []; + } + + if (currInstrBatch.length === BATCH_SIZE) { + signers.push(currSignerBatch); + instructions.push(currInstrBatch); + currSignerBatch = []; + currInstrBatch = []; + } + } + + if ( + mintEditionIntoWalletInstructions.length < MINT_TRANSACTION_SIZE && + mintEditionIntoWalletInstructions.length > 0 + ) { + currSignerBatch.push(mintEditionIntoWalletSigners); + currInstrBatch.push(mintEditionIntoWalletInstructions); + } + + if (currInstrBatch.length <= BATCH_SIZE && currInstrBatch.length > 0) { + // add the last one on + signers.push(currSignerBatch); + instructions.push(currInstrBatch); + } + console.log('Instructions', instructions); + for (let i = 0; i < instructions.length; i++) { + const instructionBatch = instructions[i]; + const signerBatch = signers[i]; + console.log('Running batch', i); + if (instructionBatch.length >= 2) + // Pump em through! + await sendTransactions( + connection, + wallet, + instructionBatch, + signerBatch, + SequenceType.StopOnFailure, + 'single', + ); + else + await sendTransactionWithRetry( + connection, + wallet, + instructionBatch[0], + signerBatch[0], + 'single', + ); + console.log('Done'); + } +} diff --git a/js/packages/web/src/actions/sendRedeemBid.ts b/js/packages/web/src/actions/sendRedeemBid.ts index e0be071..b7c2a8b 100644 --- a/js/packages/web/src/actions/sendRedeemBid.ts +++ b/js/packages/web/src/actions/sendRedeemBid.ts @@ -16,15 +16,12 @@ import { sendTransactionsWithManualRetry, MasterEditionV1, MasterEditionV2, - findProgramAddress, - createAssociatedTokenAccountInstruction, deprecatedMintNewEditionFromMasterEditionViaPrintingToken, MetadataKey, TokenAccountParser, BidderMetadata, getEditionMarkPda, decodeEditionMarker, - BidStateType, StringPublicKey, toPublicKey, WalletSigner, @@ -44,13 +41,13 @@ import { PrizeTrackingTicket, getPrizeTrackingTicket, BidRedemptionTicket, - getBidRedemption, } from '../models/metaplex'; import { claimBid } from '../models/metaplex/claimBid'; import { setupCancelBid } from './cancelBid'; import { deprecatedPopulateParticipationPrintingAccount } from '../models/metaplex/deprecatedPopulateParticipationPrintingAccount'; import { setupPlaceBid } from './sendPlaceBid'; import { claimUnusedPrizes } from './claimUnusedPrizes'; +import { createMintAndAccountWithOne } from './createMintAndAccountWithOne'; import { BN } from 'bn.js'; import { QUOTE_MINT } from '../constants'; import { @@ -414,60 +411,6 @@ async function setupRedeemFullRightsTransferInstructions( } } -async function createMintAndAccountWithOne( - wallet: WalletSigner, - receiverWallet: StringPublicKey, - mintRent: any, - instructions: TransactionInstruction[], - signers: Keypair[], -): Promise<{ mint: StringPublicKey; account: StringPublicKey }> { - if (!wallet.publicKey) throw new WalletNotConnectedError(); - - const mint = createMint( - instructions, - wallet.publicKey, - mintRent, - 0, - wallet.publicKey, - wallet.publicKey, - signers, - ); - - const PROGRAM_IDS = programIds(); - - const account: StringPublicKey = ( - await findProgramAddress( - [ - toPublicKey(receiverWallet).toBuffer(), - PROGRAM_IDS.token.toBuffer(), - mint.toBuffer(), - ], - PROGRAM_IDS.associatedToken, - ) - )[0]; - - createAssociatedTokenAccountInstruction( - instructions, - toPublicKey(account), - wallet.publicKey, - toPublicKey(receiverWallet), - mint, - ); - - instructions.push( - Token.createMintToInstruction( - PROGRAM_IDS.token, - mint, - toPublicKey(account), - wallet.publicKey, - [], - 1, - ), - ); - - return { mint: mint.toBase58(), account }; -} - export async function setupRedeemPrintingV2Instructions( connection: Connection, auctionView: AuctionView, diff --git a/js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts b/js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts new file mode 100644 index 0000000..2c5d5a7 --- /dev/null +++ b/js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts @@ -0,0 +1,58 @@ +import { Connection } from '@solana/web3.js'; +import { MintLayout } from '@solana/spl-token'; +import BN from 'bn.js'; +import { + mintNewEditionFromMasterEditionViaToken, + StringPublicKey, + TokenAccount, +} from '@oyster/common'; +import { createMintAndAccountWithOne } from './createMintAndAccountWithOne'; +import { Art } from '../types'; +import { WalletAdapter } from '@solana/wallet-base'; + +export async function setupMintEditionIntoWalletInstructions( + art: Art, + wallet: WalletAdapter, + connection: Connection, + mintTokenAccount: TokenAccount, + edition: BN, + instructions: any, + signers: any, + mintDestination: StringPublicKey, +) { + if (!art.mint) throw new Error('Art mint is not provided'); + if (typeof art.supply === 'undefined') { + throw new Error('Art supply is not provided'); + } + if (!wallet.publicKey) throw new Error('Wallet pubKey is not provided'); + if (!mintTokenAccount) { + throw new Error('Art mint token account is not provided'); + } + const walletPubKey = wallet.publicKey.toString(); + const { mint: tokenMint } = art; + const { pubkey: mintTokenAccountPubKey } = mintTokenAccount; + const mintTokenAccountOwner = mintTokenAccount.info.owner.toString(); + + const mintRentExempt = await connection.getMinimumBalanceForRentExemption( + MintLayout.span, + ); + const { mint: newMint } = await createMintAndAccountWithOne( + wallet, + mintDestination, + mintRentExempt, + instructions, + signers, + ); + + await mintNewEditionFromMasterEditionViaToken( + newMint, + tokenMint, + walletPubKey, + walletPubKey, + mintTokenAccountOwner, + mintTokenAccountPubKey, + instructions, + walletPubKey, + edition, + ); +} diff --git a/js/packages/web/src/components/ArtMinting/index.tsx b/js/packages/web/src/components/ArtMinting/index.tsx new file mode 100644 index 0000000..7f3e156 --- /dev/null +++ b/js/packages/web/src/components/ArtMinting/index.tsx @@ -0,0 +1,248 @@ +import React, { useState, useMemo, useCallback, useEffect } from 'react'; +import { LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; +import { MintLayout, AccountLayout } from '@solana/spl-token'; +import { Button, Form, Input, Modal, InputNumber } from 'antd'; +import debounce from 'lodash/debounce'; +import { + decodeMasterEdition, + MAX_EDITION_LEN, + MAX_METADATA_LEN, + MetadataKey, + MetaplexOverlay, + useConnection, + useUserAccounts, + useWallet, +} from '@oyster/common'; +import { useArt } from '../../hooks'; +import { mintEditionsToWallet } from '../../actions/mintEditionsIntoWallet'; +import { ArtType } from '../../types'; +import { Confetti } from '../Confetti'; +import { Link } from 'react-router-dom'; + +interface ArtMintingProps { + id: string; + onMint: Function; +} + +export const ArtMinting = ({ id, onMint }: ArtMintingProps) => { + const { wallet } = useWallet(); + const connection = useConnection(); + const { accountByMint } = useUserAccounts(); + const [showMintModal, setShowMintModal] = useState(false); + const [showCongrats, setShowCongrats] = useState(false); + const [mintingDestination, setMintingDestination] = useState(''); + const [editions, setEditions] = useState(1); + const [totalCost, setTotalCost] = useState(0); + const [isLoading, setIsLoading] = useState(false); + const art = useArt(id); + + const walletPubKey = wallet?.publicKey?.toString() || ''; + const maxEditionsToMint = art.maxSupply! - art.supply!; + const isArtMasterEdition = art.type === ArtType.Master; + const artMintTokenAccount = accountByMint.get(art.mint!); + const isArtOwnedByUser = + ((accountByMint.has(art.mint!) && + artMintTokenAccount?.info.amount.toNumber()) || + 0) > 0; + const isMasterEditionV1 = artMintTokenAccount + ? decodeMasterEdition(artMintTokenAccount.account.data).key === + MetadataKey.MasterEditionV1 + : false; + const renderMintEdition = + isArtMasterEdition && + isArtOwnedByUser && + !isMasterEditionV1 && + maxEditionsToMint !== 0; + + const mintingDestinationErr = useMemo(() => { + if (!mintingDestination) return 'Required'; + + try { + new PublicKey(mintingDestination); + return ''; + } catch (e) { + return 'Invalid address format'; + } + }, [mintingDestination]); + + const isMintingDisabled = + isLoading || editions < 1 || Boolean(mintingDestinationErr); + + const debouncedEditionsChangeHandler = useCallback( + debounce(val => { + setEditions(val < 1 ? 1 : val); + }, 300), + [], + ); + + useEffect(() => { + if (editions < 1) return; + + (async () => { + const mintRentExempt = await connection.getMinimumBalanceForRentExemption( + MintLayout.span, + ); + const accountRentExempt = + await connection.getMinimumBalanceForRentExemption(AccountLayout.span); + const metadataRentExempt = + await connection.getMinimumBalanceForRentExemption(MAX_METADATA_LEN); + const editionRentExempt = + await connection.getMinimumBalanceForRentExemption(MAX_EDITION_LEN); + + const cost = + ((mintRentExempt + + accountRentExempt + + metadataRentExempt + + editionRentExempt) * + editions) / + LAMPORTS_PER_SOL; + + setTotalCost(cost); + })(); + }, [connection, editions]); + + useEffect(() => { + if (!walletPubKey) return; + + setMintingDestination(walletPubKey); + }, [walletPubKey]); + + useEffect(() => { + return debouncedEditionsChangeHandler.cancel(); + }, []); + + const onSuccessfulMint = () => { + setShowMintModal(false); + setMintingDestination(walletPubKey); + setEditions(1); + setShowCongrats(true); + }; + + const mint = async () => { + try { + setIsLoading(true); + await mintEditionsToWallet( + art, + wallet!, + connection, + artMintTokenAccount!, + editions, + mintingDestination, + ); + onSuccessfulMint(); + } catch (e) { + console.error(e); + } finally { + setIsLoading(false); + } + }; + + return ( + <> + {renderMintEdition && ( +
+ + + setShowMintModal(false)} + > + Mint to} + labelAlign="left" + colon={false} + validateStatus={mintingDestinationErr ? 'error' : 'success'} + help={mintingDestinationErr} + > + { + setMintingDestination(e.target.value); + }} + /> + + + Number of editions to mint} + labelAlign="left" + colon={false} + > + + + +
Total cost: {`◎${totalCost}`}
+
+ + + +

+ Congratulations +

+

+ New editions have been minted please view your NFTs in{' '} + My Items. +

+ +
+
+ )} + + ); +}; diff --git a/js/packages/web/src/views/art/index.tsx b/js/packages/web/src/views/art/index.tsx index bd85cef..772f389 100644 --- a/js/packages/web/src/views/art/index.tsx +++ b/js/packages/web/src/views/art/index.tsx @@ -1,21 +1,33 @@ -import React from 'react'; -import { Row, Col, Divider, Layout, Tag, Button, Skeleton, List, Card } from 'antd'; +import React, { useState } from 'react'; +import { + Row, + Col, + Divider, + Layout, + Tag, + Button, + Skeleton, + List, + Card, +} from 'antd'; import { useParams } from 'react-router-dom'; -import { useArt, useExtendedArt } from './../../hooks'; +import { useArt, useExtendedArt } from '../../hooks'; import { ArtContent } from '../../components/ArtContent'; import { shortenAddress, useConnection } from '@oyster/common'; import { useWallet } from '@solana/wallet-adapter-react'; import { MetaAvatar } from '../../components/MetaAvatar'; import { sendSignMetadata } from '../../actions/sendSignMetadata'; -import { ViewOn } from './../../components/ViewOn'; +import { ViewOn } from '../../components/ViewOn'; import { ArtType } from '../../types'; +import { ArtMinting } from '../../components/ArtMinting'; const { Content } = Layout; export const ArtView = () => { const { id } = useParams<{ id: string }>(); const wallet = useWallet(); + const [remountArtMinting, setRemountArtMinting] = useState(0); const connection = useConnection(); const art = useArt(id); @@ -39,7 +51,7 @@ export const ArtView = () => { const description = data?.description; const attributes = data?.attributes; - const pubkey = wallet.publicKey?.toBase58() || ''; + const pubkey = wallet?.publicKey?.toBase58() || ''; const tag = (
@@ -181,6 +193,13 @@ export const ArtView = () => { > Mark as Sold */} + + {/* TODO: Add conversion of MasterEditionV1 to MasterEditionV2 */} + await setRemountArtMinting(prev => prev + 1)} + /> @@ -197,23 +216,22 @@ export const ArtView = () => {
{art.about}
*/} - {attributes && + {attributes && ( <>
Attributes
- - {attributes.map(attribute => + + {attributes.map(attribute => ( - {attribute.value} + + {attribute.value} + - )} + ))} - } + )} From 2bcd97ac04bcb70e36bc3de0bbfb22e552863393 Mon Sep 17 00:00:00 2001 From: Jordan Prince Date: Fri, 3 Sep 2021 19:20:06 -0500 Subject: [PATCH 11/14] minor fix to type declaration (#291) --- js/packages/web/src/actions/mintEditionsIntoWallet.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/packages/web/src/actions/mintEditionsIntoWallet.ts b/js/packages/web/src/actions/mintEditionsIntoWallet.ts index 44df303..7ce681e 100644 --- a/js/packages/web/src/actions/mintEditionsIntoWallet.ts +++ b/js/packages/web/src/actions/mintEditionsIntoWallet.ts @@ -9,7 +9,7 @@ import { } from '@oyster/common'; import { setupMintEditionIntoWalletInstructions } from './setupMintEditionIntoWalletInstructions'; import { Art } from '../types'; -import { WalletAdapter } from '@solana/wallet-base'; +import { WalletAdapter } from '@solana/wallet-adapter-base'; // TODO: Refactor. Extract batching logic, // as the similar one is used in settle.ts and convertMasterEditions.ts From 0ba4954762c8ad7a7802cbb03268fce5de932b40 Mon Sep 17 00:00:00 2001 From: Jordan Prince Date: Fri, 3 Sep 2021 19:37:05 -0500 Subject: [PATCH 12/14] Wallet adapter fix (#292) * minor fix to type declaration * Some more typescript fixes --- js/packages/web/src/actions/mintEditionsIntoWallet.ts | 4 ++-- .../web/src/actions/setupMintEditionIntoWalletInstructions.ts | 4 ++-- js/packages/web/src/components/ArtMinting/index.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/js/packages/web/src/actions/mintEditionsIntoWallet.ts b/js/packages/web/src/actions/mintEditionsIntoWallet.ts index 7ce681e..29e1fbe 100644 --- a/js/packages/web/src/actions/mintEditionsIntoWallet.ts +++ b/js/packages/web/src/actions/mintEditionsIntoWallet.ts @@ -9,7 +9,7 @@ import { } from '@oyster/common'; import { setupMintEditionIntoWalletInstructions } from './setupMintEditionIntoWalletInstructions'; import { Art } from '../types'; -import { WalletAdapter } from '@solana/wallet-adapter-base'; +import { WalletContextState } from '@solana/wallet-adapter-react'; // TODO: Refactor. Extract batching logic, // as the similar one is used in settle.ts and convertMasterEditions.ts @@ -18,7 +18,7 @@ const BATCH_SIZE = 10; export async function mintEditionsToWallet( art: Art, - wallet: WalletAdapter, + wallet: WalletContextState, connection: Connection, mintTokenAccount: TokenAccount, editions: number = 1, diff --git a/js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts b/js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts index 2c5d5a7..6cca0d9 100644 --- a/js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts +++ b/js/packages/web/src/actions/setupMintEditionIntoWalletInstructions.ts @@ -8,11 +8,11 @@ import { } from '@oyster/common'; import { createMintAndAccountWithOne } from './createMintAndAccountWithOne'; import { Art } from '../types'; -import { WalletAdapter } from '@solana/wallet-base'; +import { WalletContextState } from '@solana/wallet-adapter-react'; export async function setupMintEditionIntoWalletInstructions( art: Art, - wallet: WalletAdapter, + wallet: WalletContextState, connection: Connection, mintTokenAccount: TokenAccount, edition: BN, diff --git a/js/packages/web/src/components/ArtMinting/index.tsx b/js/packages/web/src/components/ArtMinting/index.tsx index 7f3e156..d19b3f6 100644 --- a/js/packages/web/src/components/ArtMinting/index.tsx +++ b/js/packages/web/src/components/ArtMinting/index.tsx @@ -11,13 +11,13 @@ import { MetaplexOverlay, useConnection, useUserAccounts, - useWallet, } from '@oyster/common'; import { useArt } from '../../hooks'; import { mintEditionsToWallet } from '../../actions/mintEditionsIntoWallet'; import { ArtType } from '../../types'; import { Confetti } from '../Confetti'; import { Link } from 'react-router-dom'; +import { useWallet } from '@solana/wallet-adapter-react'; interface ArtMintingProps { id: string; @@ -25,7 +25,7 @@ interface ArtMintingProps { } export const ArtMinting = ({ id, onMint }: ArtMintingProps) => { - const { wallet } = useWallet(); + const wallet = useWallet(); const connection = useConnection(); const { accountByMint } = useUserAccounts(); const [showMintModal, setShowMintModal] = useState(false); From 40cfa295117d50dbf2593b81b9c63f0fcf22a17b Mon Sep 17 00:00:00 2001 From: Jordan Prince Date: Sat, 4 Sep 2021 15:32:45 -0500 Subject: [PATCH 13/14] A few candy machine fixes - to uploader and program (#304) --- js/packages/cli/src/cli.ts | 32 ++++++++++++------------------- rust/nft-candy-machine/src/lib.rs | 5 +++-- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/js/packages/cli/src/cli.ts b/js/packages/cli/src/cli.ts index 6e18fc3..eea3372 100755 --- a/js/packages/cli/src/cli.ts +++ b/js/packages/cli/src/cli.ts @@ -433,9 +433,10 @@ program } } + const keys = Object.keys(cacheContent.items); try { await Promise.all( - chunks(Array.from(Array(images.length).keys()), 1000).map( + chunks(Array.from(Array(keys.length).keys()), 1000).map( async allIndexesInSlice => { for ( let offset = 0; @@ -444,30 +445,23 @@ program ) { const indexes = allIndexesInSlice.slice(offset, offset + 10); const onChain = indexes.filter(i => { - const index = images[i].replace(extension, '').split('/').pop(); - return cacheContent.items[index].onChain; + const index = keys[i]; + return cacheContent.items[index]?.onChain; }); - const ind = images[indexes[0]] - .replace(extension, '') - .split('/') - .pop(); + const ind = keys[indexes[0]]; if (onChain.length != indexes.length) { console.log( 'Writing indices ', ind, '-', - parseInt(ind) + indexes.length, + keys[indexes[indexes.length - 1]], ); const txId = await anchorProgram.rpc.addConfigLines( ind, indexes.map(i => ({ - uri: cacheContent.items[ - images[i].replace(extension, '').split('/').pop() - ].link, - name: cacheContent.items[ - images[i].replace(extension, '').split('/').pop() - ].name, + uri: cacheContent.items[keys[i]].link, + name: cacheContent.items[keys[i]].name, })), { accounts: { @@ -478,12 +472,8 @@ program }, ); indexes.forEach(i => { - cacheContent.items[ - images[i].replace(extension, '').split('/').pop() - ] = { - ...cacheContent.items[ - images[i].replace(extension, '').split('/').pop() - ], + cacheContent.items[keys[i]] = { + ...cacheContent.items[keys[i]], onChain: true, }; }); @@ -723,6 +713,8 @@ program const config = await solConnection.getAccountInfo( new PublicKey(cachedContent.program.config), ); + const number = new BN(config.data.slice(247, 247 + 4), undefined, 'le'); + console.log('Number', number.toNumber()); const keys = Object.keys(cachedContent.items); for (let i = 0; i < keys.length; i++) { diff --git a/rust/nft-candy-machine/src/lib.rs b/rust/nft-candy-machine/src/lib.rs index cc55bf4..c785abf 100644 --- a/rust/nft-candy-machine/src/lib.rs +++ b/rust/nft-candy-machine/src/lib.rs @@ -351,6 +351,7 @@ pub mod nft_candy_machine { position_from_right ); if old_value_in_vec != data[my_position_in_vec] { + msg!("Increasing count"); new_count = new_count .checked_add(1) .ok_or(ErrorCode::NumericalOverflowError)?; @@ -395,7 +396,7 @@ pub mod nft_candy_machine { } if get_config_count(&ctx.accounts.config.to_account_info().data.borrow())? - != candy_machine.data.items_available as usize + < candy_machine.data.items_available as usize { return Err(ErrorCode::ConfigLineMismatch.into()); } @@ -610,6 +611,6 @@ pub enum ErrorCode { CandyMachineEmpty, #[msg("Candy machine is not live yet!")] CandyMachineNotLiveYet, - #[msg("Number of config lines must match items available")] + #[msg("Number of config lines must be at least number of items available")] ConfigLineMismatch, } From e0f2c1b0689178585517e6c6dd080104887f9955 Mon Sep 17 00:00:00 2001 From: Armani Ferrante Date: Sat, 4 Sep 2021 15:59:44 -0700 Subject: [PATCH 14/14] Update candy machine with anchor v0.14.0 (#283) --- rust/Anchor.toml | 3 + rust/Cargo.lock | 640 +++++++----------------------- rust/nft-candy-machine/Cargo.toml | 3 +- rust/nft-candy-machine/src/lib.rs | 15 +- 4 files changed, 158 insertions(+), 503 deletions(-) diff --git a/rust/Anchor.toml b/rust/Anchor.toml index 829f7c0..7607f4a 100644 --- a/rust/Anchor.toml +++ b/rust/Anchor.toml @@ -5,6 +5,9 @@ url = "https://anchor.projectserum.com" cluster = "localnet" wallet = "~/.config/solana/id.json" +[programs.mainnet] +nft_candy_machine = "cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ" + [scripts] test = "mocha -t 1000000 tests/" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 3175c1f..5620d4f 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "Inflector" version = "0.11.4" @@ -48,9 +50,9 @@ checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" [[package]] name = "anchor-attribute-access-control" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ba6adc8bed8a9b284219ba12489b459ad233679a489edf9642987e6b090473" +checksum = "d71a7ef3d6eb99d9e4586fa99245d1adfc71e68df3032a262ee02dee25919237" dependencies = [ "anchor-syn", "anyhow", @@ -62,9 +64,9 @@ dependencies = [ [[package]] name = "anchor-attribute-account" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab91b688a60b289767724288d73bf5d4fc425438e13d4d4f604a73ab9686c675" +checksum = "ad63b9ca28de653ca0bc735ea7d2768ab619ccd678f06f642da16ea39108e8f2" dependencies = [ "anchor-syn", "anyhow", @@ -75,9 +77,9 @@ dependencies = [ [[package]] name = "anchor-attribute-error" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7a9215bb3b101f7237c06d5fc873278b82f685bfee95e4ec7e8427ff83c390" +checksum = "b7f013d4fbe3de1f6828e856a7e7c1f47120e05a7f76667981b34efb64b04371" dependencies = [ "anchor-syn", "proc-macro2 1.0.28", @@ -87,9 +89,9 @@ dependencies = [ [[package]] name = "anchor-attribute-event" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b26d266d84ec0d8097214cf37430b4681e29da0522fbd3fdb0afc6fc16b2313" +checksum = "3ba91ad4e01c7fa5dec530c8950e817ebda38371e63e292705e5bad02ffab4e0" dependencies = [ "anchor-syn", "anyhow", @@ -100,9 +102,9 @@ dependencies = [ [[package]] name = "anchor-attribute-interface" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08e35d76a8f8bc8934acc877c8643ec14ddcb355d423de8f9b7e225fe9824b60" +checksum = "c22614501a321f04070dc8caf145885e5786503e8116dac0663f9e36878df133" dependencies = [ "anchor-syn", "anyhow", @@ -114,9 +116,9 @@ dependencies = [ [[package]] name = "anchor-attribute-program" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6e8a3822e58df25ef45125a6dbe5ceeefebea68954f22beeeff83e4bd040a4" +checksum = "6e3f8ef5378318b4ce699bc7998e9b34698374b16a68675493ecb75d0192ef3e" dependencies = [ "anchor-syn", "anyhow", @@ -127,9 +129,9 @@ dependencies = [ [[package]] name = "anchor-attribute-state" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86586d43cf7e0f10431e018c72f51cfc60d1ce3323df44249ff3a70a45168b20" +checksum = "e5363d1b812c8a85bc080132b57402e9b2d2d30c734dadba0f075e5de65d122b" dependencies = [ "anchor-syn", "anyhow", @@ -140,9 +142,9 @@ dependencies = [ [[package]] name = "anchor-derive-accounts" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85aa313d4317811983cab3e7a66ede358c4eb3f1fe47acf51a6078cd239bdbe7" +checksum = "494696ea2500856baca41aeee7da07cf85883a2e11d9f912255e088d2b4a0dea" dependencies = [ "anchor-syn", "anyhow", @@ -153,9 +155,9 @@ dependencies = [ [[package]] name = "anchor-lang" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0b300d7222b786b7947bd1c14ab82a6c519fa1bbce4ed0f0ffe4db1e6c05669" +checksum = "6e209e7e6fc0dfff1b5697a245ee854151e71ad3ef700fa49019c2201011e056" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", @@ -174,9 +176,9 @@ dependencies = [ [[package]] name = "anchor-syn" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833a32a3945814ecd8b6fdcb8666580e69037fe2efc4eaa4a9c68b1940450505" +checksum = "93cd94aadc922965d9eb5d49f266c9450f3d5666f5a3e9648996cb7fe91d61e8" dependencies = [ "anyhow", "bs58", @@ -197,7 +199,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -249,7 +251,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -526,7 +528,7 @@ dependencies = [ "num-traits", "serde", "time", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -588,7 +590,7 @@ dependencies = [ "terminal_size", "termios", "unicode-width", - "winapi 0.3.9", + "winapi", "winapi-util", ] @@ -604,7 +606,7 @@ dependencies = [ "regex", "terminal_size", "unicode-width", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -667,17 +669,6 @@ dependencies = [ "crossbeam-utils 0.8.5", ] -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - [[package]] name = "crossbeam-deque" version = "0.8.1" @@ -685,25 +676,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if 1.0.0", - "crossbeam-epoch 0.9.5", + "crossbeam-epoch", "crossbeam-utils 0.8.5", ] -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.6", - "scopeguard", -] - [[package]] name = "crossbeam-epoch" version = "0.9.5" @@ -713,21 +689,10 @@ dependencies = [ "cfg-if 1.0.0", "crossbeam-utils 0.8.5", "lazy_static", - "memoffset 0.6.4", + "memoffset", "scopeguard", ] -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - [[package]] name = "crossbeam-utils" version = "0.7.2" @@ -898,7 +863,7 @@ checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", "redox_users", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1047,7 +1012,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.2.10", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1093,28 +1058,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - -[[package]] -name = "futures" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" - [[package]] name = "futures" version = "0.3.16" @@ -1236,7 +1179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e692e296bfac1d2533ef168d0b60ff5897b8b70a4009276834014dd8924cc028" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1298,7 +1241,7 @@ dependencies = [ "http", "indexmap", "slab", - "tokio 1.10.1", + "tokio", "tokio-util", "tracing", ] @@ -1461,7 +1404,7 @@ dependencies = [ "itoa", "pin-project-lite", "socket2 0.4.1", - "tokio 1.10.1", + "tokio", "tower-service", "tracing", "want", @@ -1477,7 +1420,7 @@ dependencies = [ "hyper", "log", "rustls", - "tokio 1.10.1", + "tokio", "tokio-rustls", "webpki", ] @@ -1583,11 +1526,11 @@ dependencies = [ [[package]] name = "jsonrpc-core" -version = "17.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4467ab6dfa369b69e52bd0692e480c4d117410538526a57a304a0f2250fd95e" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.3.16", + "futures", "futures-executor", "futures-util", "log", @@ -1602,16 +1545,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "lazy_static" version = "1.4.0" @@ -1634,7 +1567,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" dependencies = [ "cfg-if 1.0.0", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1745,15 +1678,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.6.4" @@ -1779,25 +1703,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow 0.2.2", - "net2", - "slab", - "winapi 0.2.8", -] - [[package]] name = "mio" version = "0.7.13" @@ -1806,32 +1711,9 @@ checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" dependencies = [ "libc", "log", - "miow 0.3.7", + "miow", "ntapi", - "winapi 0.3.9", -] - -[[package]] -name = "mio-uds" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" -dependencies = [ - "iovec", - "libc", - "mio 0.6.23", -] - -[[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", + "winapi", ] [[package]] @@ -1840,7 +1722,7 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1869,7 +1751,7 @@ checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" dependencies = [ "cfg-if 0.1.10", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1900,7 +1782,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2115,17 +1997,6 @@ dependencies = [ "syn 1.0.75", ] -[[package]] -name = "parking_lot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.6.2", - "rustc_version", -] - [[package]] name = "parking_lot" version = "0.10.2" @@ -2147,21 +2018,6 @@ dependencies = [ "parking_lot_core 0.8.5", ] -[[package]] -name = "parking_lot_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "rustc_version", - "smallvec 0.6.14", - "winapi 0.3.9", -] - [[package]] name = "parking_lot_core" version = "0.7.2" @@ -2172,8 +2028,8 @@ dependencies = [ "cloudabi", "libc", "redox_syscall 0.1.57", - "smallvec 1.6.1", - "winapi 0.3.9", + "smallvec", + "winapi", ] [[package]] @@ -2186,8 +2042,8 @@ dependencies = [ "instant", "libc", "redox_syscall 0.2.10", - "smallvec 1.6.1", - "winapi 0.3.9", + "smallvec", + "winapi", ] [[package]] @@ -2484,7 +2340,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", - "crossbeam-deque 0.8.1", + "crossbeam-deque", "either", "rayon-core", ] @@ -2496,7 +2352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel 0.5.1", - "crossbeam-deque 0.8.1", + "crossbeam-deque", "crossbeam-utils 0.8.5", "lazy_static", "num_cpus", @@ -2550,7 +2406,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2579,7 +2435,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "tokio 1.10.1", + "tokio", "tokio-rustls", "url", "wasm-bindgen", @@ -2601,7 +2457,7 @@ dependencies = [ "spin", "untrusted", "web-sys", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2611,7 +2467,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2676,7 +2532,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ "lazy_static", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2894,15 +2750,6 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" -[[package]] -name = "smallvec" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" -dependencies = [ - "maybe-uninit", -] - [[package]] name = "smallvec" version = "1.6.1" @@ -2917,7 +2764,7 @@ checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ "cfg-if 1.0.0", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2927,14 +2774,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] name = "solana-account-decoder" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a67e4a537eccc21f8b942f60990d57f76980638db834161747e47cfba4b8f050" +checksum = "d89741082d52115e1d866befdf65a9c3197c50734b998f75cfb0a291c3555738" dependencies = [ "Inflector", "base64 0.12.3", @@ -2955,30 +2802,30 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a51c83e33eb5fc2a688db5e7e19a8c5b481385e1d9f30b012962e9bcdb002629" +checksum = "15e2822ab4ddf7a9de1c190f817274922efcdc9cb00cd4bb3d5cb4a045f458e7" dependencies = [ "bincode", "borsh", "borsh-derive", - "futures 0.3.16", - "mio 0.7.13", + "futures", + "mio", "solana-banks-interface", "solana-program", "solana-sdk", "tarpc", - "tokio 1.10.1", + "tokio", "tokio-serde", ] [[package]] name = "solana-banks-interface" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73a34a243df509dfde8fe42129aa34a3db9913e90b7c7eb290f597361016268" +checksum = "ec2a702be6df37c117b2b9cadc90508eaad3ad03004873d4e5ef434fd6b9788a" dependencies = [ - "mio 0.7.13", + "mio", "serde", "solana-sdk", "tarpc", @@ -2986,29 +2833,29 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3929ed2f73a4a9c80ddff4b1b49ecc81fa6e8689ca475e9e625034aaebc22516" +checksum = "e4f44e5b8eef83073dc34847fb8cd33297caf706b6c7ada80440e0b50839d907" dependencies = [ "bincode", - "futures 0.3.16", + "futures", "log", - "mio 0.7.13", + "mio", "solana-banks-interface", "solana-metrics", "solana-runtime", "solana-sdk", "tarpc", - "tokio 1.10.1", + "tokio", "tokio-serde", "tokio-stream", ] [[package]] name = "solana-bpf-loader-program" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d848ee15b984d2703750a52e3cbe23024256184b11426a1677bc98934087f8c7" +checksum = "44b703485a6f497d91fa76cd3111bee638a494c69b7508efdbbcedf7d4cb3f5e" dependencies = [ "bincode", "byteorder", @@ -3027,9 +2874,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d2792f093f28b0a7403443225494c0d75215253784897a6f8b8e6fb83ce91a" +checksum = "1ff790bd97dee3be05ec879b176875f0bb0ef0eb62e5e11e6b269a2d7dc8bf10" dependencies = [ "chrono", "clap", @@ -3044,9 +2891,9 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c3982b00bf2ac283c86e760aae127d395ab8b610cc3690a0a6ff500ae561e7" +checksum = "6eb21cb2d46661d9e549293ce2ec4e4afa7205b66562e3768e16f5fe737f420f" dependencies = [ "dirs-next", "lazy_static", @@ -3058,9 +2905,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023263a79a3356532549c9e0555c6e1b2a2e94205b5d58c7041703bbd455133d" +checksum = "779f90ee9f77c831426af58c9732902051314bb8f2607473ffd6089a3b008133" dependencies = [ "base64 0.13.0", "bincode", @@ -3085,16 +2932,16 @@ dependencies = [ "solana-version", "solana-vote-program", "thiserror", - "tokio 1.10.1", + "tokio", "tungstenite", "url", ] [[package]] name = "solana-config-program" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5348055cf52ab01efc1578d4159ec40bb39c3913df4365787c3e1382c101c1" +checksum = "e6cebea98645f683ed9bf32f7f1e50a643479ab85fc8e6ba1c287a4562f534a4" dependencies = [ "bincode", "chrono", @@ -3107,9 +2954,9 @@ dependencies = [ [[package]] name = "solana-crate-features" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c9b446eea7a5af7d4631ce3fd0625439fdc68eda4557223233f1c6bba3e847a" +checksum = "23f7002fb7a602e75e9f077ba8aab67fff49e24327b958280648e731dab894a6" dependencies = [ "backtrace", "bytes 0.4.12", @@ -3126,15 +2973,14 @@ dependencies = [ "serde", "syn 0.15.44", "syn 1.0.75", - "tokio 0.1.22", - "winapi 0.3.9", + "winapi", ] [[package]] name = "solana-faucet" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58750a03b49940f486c0dcb5744bb6ee5da82ced6636000a90af7618a67dd1b" +checksum = "45ce6d1994d0bdcb0571eeaad0718c540b89b626c24df2bdf6987f80837af4c5" dependencies = [ "bincode", "byteorder", @@ -3150,14 +2996,14 @@ dependencies = [ "solana-version", "spl-memo", "thiserror", - "tokio 1.10.1", + "tokio", ] [[package]] name = "solana-frozen-abi" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6760c1dd139c202ef6df28bff467c904aa35b1aa1a59be268c47aec8bc6c0" +checksum = "21ddfc2b65a555c0e0156c043bce092d473bc4f00daa7ca3c223d97d92d2e807" dependencies = [ "bs58", "bv", @@ -3175,9 +3021,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4dbe296c16dec41e8e6f4e6c2694c6224820d34c0ab11a2d3ff9683f44878ef" +checksum = "a876aa31298fdee6560c8ee0695ebed313bbdbb6fbbee439ac3b9df8aebfb87c" dependencies = [ "proc-macro2 1.0.28", "quote 1.0.9", @@ -3187,9 +3033,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af1959b520c0fc99bc6583ba9d82bfa15b1ac007516795bceeb4a951af77c7" +checksum = "98a07290cc521e529bff0b0afd3aacd1d3904a41f35321ede6d1f3574efa3e94" dependencies = [ "env_logger", "lazy_static", @@ -3198,9 +3044,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2915d20f35948b35deffa8624cb189385f13758bd171d8d4a966ae8bf360a4" +checksum = "b5ab24cb5a8fb2fdb32e151606e6a954a6d6e4d764102eb96616cb895622d284" dependencies = [ "log", "solana-metrics", @@ -3209,9 +3055,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d87867f1f9e399274e08902eb72c9158bef5399e2566161dbe831abeaaa7d14" +checksum = "a49cfd9ec1637885f80d0ac33cf71c685fe13bad6de2bfd469e8aa7dc39967a3" dependencies = [ "env_logger", "gethostname", @@ -3223,9 +3069,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7dd877b66b4436b9fcb6d2c2e6055a1dd18b0dcf5938ea1f20efa0b7f09159" +checksum = "2be3ee1237d9013cbd11f0d0af69a4473c703b700165e6c39b49cf0c0554d6f9" dependencies = [ "bincode", "clap", @@ -3239,15 +3085,15 @@ dependencies = [ "solana-logger", "solana-sdk", "solana-version", - "tokio 1.10.1", + "tokio", "url", ] [[package]] name = "solana-program" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5e5dd99d642b5e89eeb20457310c3c23f20dbf44e67c64e473a02fbc50d646" +checksum = "49ffc60d33a318300682e42d28ff4f1276327f6374cab9591c8620a54be7aec1" dependencies = [ "bincode", "blake3", @@ -3280,9 +3126,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20a2961354afb2ef3ed35ec477961f1f6f0113291c83b993a30382180c496d96" +checksum = "692786837dcb915006b39f3e91b1771abc06e3dee4db478400817b436eeac73a" dependencies = [ "async-trait", "base64 0.12.3", @@ -3290,7 +3136,7 @@ dependencies = [ "chrono", "chrono-humanize", "log", - "mio 0.7.13", + "mio", "serde", "serde_derive", "solana-banks-client", @@ -3301,14 +3147,14 @@ dependencies = [ "solana-sdk", "solana-vote-program", "thiserror", - "tokio 1.10.1", + "tokio", ] [[package]] name = "solana-rayon-threadlimit" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c3a0037afa0b03e0aad9f8fb451d1008d5538023919835cf86c9833bc93103" +checksum = "e0375eae0722ae7303dbc5ce024104155b851017f31d7bc5096a871153540561" dependencies = [ "lazy_static", "num_cpus", @@ -3316,9 +3162,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "083d31e6510a746ecc4ce8d151a232324056c7a124a218948060947b668d6db8" +checksum = "c2cfa60250c3f8f1c2de9258d35202021ddf1379a24a5820ec813de392af3d94" dependencies = [ "base32", "console 0.14.1", @@ -3337,9 +3183,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f047727075c3434f17d33467bd26033fea3b4e71e7c23caa261015507b162581" +checksum = "58793cb7e9a2996ad3785816f58fddb7e29be245e6c12d0db62d8b4c6f6d17c2" dependencies = [ "arrayref", "bincode", @@ -3388,9 +3234,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0048d346fdf3629dca2bccc2ed63320da9d0291c32b816911ed63d34c65286a5" +checksum = "95179bc7d87c5b61c86f3bbbac4e52a5d909432473593d33546e4f20dc582052" dependencies = [ "assert_matches", "bincode", @@ -3437,9 +3283,9 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee909dcddb5b4d349b3e5e1ae92f6660cd2f783dea392ae2e73210776aadc9b" +checksum = "b453dca160617b1676c47e3cfd4361f455dc5bb1c93659ec84b0c5d566b5c039" dependencies = [ "bs58", "proc-macro2 1.0.28", @@ -3450,18 +3296,18 @@ dependencies = [ [[package]] name = "solana-secp256k1-program" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd4c29c6b269800898610da38de45d28fd56b24cb4030c588ffd6acc11a7443" +checksum = "389178c92126e1e85189414688f93e9be836272bbe6ab03db04c804921eb09bd" dependencies = [ "solana-sdk", ] [[package]] name = "solana-stake-program" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c01fa18bedd1773c9abf86fc58b87ed6e1117ce9f42c9a703becc1d351d810d" +checksum = "2e690a0aed0ff8c854ee79ec9c437756f9c0a24cdb0c1d0e979b60db8b6a4513" dependencies = [ "bincode", "log", @@ -3481,9 +3327,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6ea7cfdeff6ff1fba74096f3bb94688f0fdb780524e08676323108352532dfa" +checksum = "692b993f3e2ee1d3ffd9eb50e079bc9cc702d6a3a833d0c2c14a46d9268ea750" dependencies = [ "Inflector", "base64 0.12.3", @@ -3505,9 +3351,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978569fec8c913d798f5e3dad2c8b6d03a6a30e8e04da633ac356ddde832f933" +checksum = "de8d410e68becf2a80a582caa46349dca6959ecf1319fe722a11a33e46af229b" dependencies = [ "log", "rustc_version", @@ -3521,9 +3367,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "506df67749a343d9f9a48b7b5566faf2bc43d0611b520467664a58cd78d4b1be" +checksum = "4cc0bed4119e725a813a56ace42738ab5bbfbfc36152b169bd957ae38e62543a" dependencies = [ "bincode", "log", @@ -3812,7 +3658,7 @@ checksum = "e325774dd5b35d979e9f4db2b0f0d7d85dc2ff2b676a3150af56c09eafc14b07" dependencies = [ "anyhow", "fnv", - "futures 0.3.16", + "futures", "humantime", "log", "pin-project", @@ -3820,7 +3666,7 @@ dependencies = [ "serde", "static_assertions", "tarpc-plugins", - "tokio 1.10.1", + "tokio", "tokio-serde", "tokio-util", ] @@ -3847,7 +3693,7 @@ dependencies = [ "rand 0.8.4", "redox_syscall 0.2.10", "remove_dir_all", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3866,7 +3712,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3915,7 +3761,7 @@ checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3951,30 +3797,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" -[[package]] -name = "tokio" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio 0.6.23", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", -] - [[package]] name = "tokio" version = "1.10.1" @@ -3985,67 +3807,14 @@ dependencies = [ "bytes 1.1.0", "libc", "memchr", - "mio 0.7.13", + "mio", "num_cpus", "once_cell", "parking_lot 0.11.2", "pin-project-lite", "signal-hook-registry", "tokio-macros", - "winapi 0.3.9", -] - -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "tokio-io", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -dependencies = [ - "futures 0.1.31", - "tokio-executor", -] - -[[package]] -name = "tokio-executor" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", -] - -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.31", - "tokio-io", - "tokio-threadpool", -] - -[[package]] -name = "tokio-io" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", + "winapi", ] [[package]] @@ -4059,25 +3828,6 @@ dependencies = [ "syn 1.0.75", ] -[[package]] -name = "tokio-reactor" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "mio 0.6.23", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", -] - [[package]] name = "tokio-rustls" version = "0.22.0" @@ -4085,7 +3835,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" dependencies = [ "rustls", - "tokio 1.10.1", + "tokio", "webpki", ] @@ -4113,93 +3863,7 @@ checksum = "7b2f3f698253f03119ac0102beaa64f67a67e08074d03a22d18784104543727f" dependencies = [ "futures-core", "pin-project-lite", - "tokio 1.10.1", -] - -[[package]] -name = "tokio-sync" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" -dependencies = [ - "fnv", - "futures 0.1.31", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "mio 0.6.23", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -dependencies = [ - "crossbeam-deque 0.7.4", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "num_cpus", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-timer" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", - "mio 0.6.23", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "libc", - "log", - "mio 0.6.23", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "tokio", ] [[package]] @@ -4213,7 +3877,7 @@ dependencies = [ "futures-sink", "log", "pin-project-lite", - "tokio 1.10.1", + "tokio", ] [[package]] @@ -4402,7 +4066,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", - "winapi 0.3.9", + "winapi", "winapi-util", ] @@ -4525,12 +4189,6 @@ dependencies = [ "webpki", ] -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - [[package]] name = "winapi" version = "0.3.9" @@ -4541,12 +4199,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -4559,7 +4211,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -4574,17 +4226,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", + "winapi", ] [[package]] diff --git a/rust/nft-candy-machine/Cargo.toml b/rust/nft-candy-machine/Cargo.toml index 8bb8a28..f352495 100644 --- a/rust/nft-candy-machine/Cargo.toml +++ b/rust/nft-candy-machine/Cargo.toml @@ -15,8 +15,7 @@ cpi = ["no-entrypoint"] default = [] [dependencies] -anchor-lang = "0.13.2" +anchor-lang = "0.14.0" arrayref = "0.3.6" spl-token = { version="3.1.1", features = [ "no-entrypoint" ] } spl-token-metadata = { path = "../token-metadata/program", features = [ "no-entrypoint" ] } - diff --git a/rust/nft-candy-machine/src/lib.rs b/rust/nft-candy-machine/src/lib.rs index c785abf..d45c177 100644 --- a/rust/nft-candy-machine/src/lib.rs +++ b/rust/nft-candy-machine/src/lib.rs @@ -451,7 +451,13 @@ pub struct AddConfigLines<'info> { #[derive(Accounts)] pub struct MintNFT<'info> { config: ProgramAccount<'info, Config>, - #[account(mut, has_one = config, has_one = wallet, seeds=[PREFIX.as_bytes(), config.key().as_ref(), candy_machine.data.uuid.as_bytes(), &[candy_machine.bump]])] + #[account( + mut, + has_one = config, + has_one = wallet, + seeds = [PREFIX.as_bytes(), config.key().as_ref(), candy_machine.data.uuid.as_bytes()], + bump = candy_machine.bump, + )] candy_machine: ProgramAccount<'info, CandyMachine>, #[account(mut, signer)] payer: AccountInfo<'info>, @@ -481,7 +487,12 @@ pub struct MintNFT<'info> { #[derive(Accounts)] pub struct UpdateCandyMachine<'info> { - #[account(mut, has_one=authority, seeds=[PREFIX.as_bytes(), candy_machine.config.key().as_ref(), candy_machine.data.uuid.as_bytes(), &[candy_machine.bump]])] + #[account( + mut, + has_one = authority, + seeds = [PREFIX.as_bytes(), candy_machine.config.key().as_ref(), candy_machine.data.uuid.as_bytes()], + bump = candy_machine.bump + )] candy_machine: ProgramAccount<'info, CandyMachine>, #[account(signer)] authority: AccountInfo<'info>,