Some related issues with smart contracts

1.Can one contract transfer another contract? For example: transfer the owner of nft to a contract instance, after the transfer, the owner of the contract instance calls the method in the contract to transfer it to the account address.
2.The contract storage can only be less than 16k, so what if the number of users of an erc721 is greater than 100,000 or millions. That is, the total size of the key-value pairs of the map is greater than 16k

  1. I am not sure what you mean exactly. A contract can send a message to another contract. This message can include an amount of CCD. A contract can also do a “simple transfer” to an account. See send in concordium_std - Rust and HasActions in concordium_std - Rust
  2. Currently there is no good solution. Splitting your contract would work, but is tedious and difficult. The upcoming Sirius release will include a new version of smart contracts that will have unbounded (apart from energy) state.

Thanks for your answer, I probably understand.