1

I want to create a web app that will allow users to deploy a smart contract for ERC721 SBT (Soul-Bound Tokens) and then transfer those SBTs to specific accounts. However, I intend to keep it as a no-code platform where users with limited knowledge of Solidity can deploy the contract. As far as I understand, deploying the contract requires the ABI, bytecode, public key (wallet address), and private key. I possess the ABI and bytecode, and my users can share their wallet addresses, but they understandably won't share their private keys. Is there a method by which I can facilitate the deployment of the SBT contract using their addresses?

Several platforms are available that offer this capability. For instance: https://mintnite.io.

On Mintnite, users can perform this action for SBTs as well as other token types. In my specific use case, I only need this functionality for SBTs. Essentially, I am developing a substantial app centered around SBTs.

In-short

I aim to incorporate a feature similar to https://mintnite.io, allowing users to first deploy the SBT contract using their addresses, and subsequently issue these SBTs to others. While the second part of issuing SBTs is achievable, I'm encountering difficulties with the first part. The challenge lies in the fact that if I personally deploy the contract, I would become its owner. Consequently, only I would have the ability to issue SBTs to other accounts, not the users of my application.

Tech stack

I have the smart contract of SBT ready to be written using Solidity and I have the json ABI and bytecode too. I am building my platform using MERN stack.

Thank you!

1 Answer 1

2

Short answer:

  1. You can't deploy on their behalf if you don't have their private key or their signed tx.

You can achieve similar to what you describe by either one of the two methods:

  1. Two transactions: you can deploy the contract and transfer ownership ( using transferOwnership) to them.
  2. One transaction: you can have a special factory contract with a special function so anyone can interact with that factory to create NFT contract under arbitrary address' ownership (arbitrarily set the owner). Basically the factory contract will create a new contract and do the transferring of ownership at once.

The fact that who is the deployer (i.e. you in this case) does not matter to the smart contract at all. Just change its owner (and possible logic) to suit your application's needs.

3
  • But then in the case of mintnite.io, how do they deploy a contract on my address then? Because deployment of contract uses my own gas fees so I don't think they are deploying the contract themselves and then transferring the ownership. Aug 31, 2023 at 3:26
  • 1
    In that case, you signed the deployment transaction which falls into my short answer 1. They must have your signed tx. Simply compile and get the bytecode, craft the transaction data, and request users to send transaction using metamask. These details you can ask chatgpt and take a look at metamask documentation.
    – minhhn2910
    Aug 31, 2023 at 9:09
  • "my own gas fees" means you as the user paid for gas, you signed the transaction. The two solutions above are when the users don't need to sign any transaction using their wallet.
    – minhhn2910
    Aug 31, 2023 at 9:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.