Requirements for smart contract initiation/deployment

Hi everyone, I read that you need to install a full node to deploy smart contracts on the Ethereum blockchain, is this correct?
And what is the difference between initiating and deploying a smart contract?

Hello @codingbibi.

Contract deployment

Even though you’ll need to interact with a node to deploy a smart contract, it’s not necessary for you to actually run the node. You can just use an existing node, there are many providers out there like Infura or Alchemy.

Check out Ethereum’s official docs on deploying smart contracts, or OpenZeppelin’s Connecting to public testnets and Preparing for mainnet guides.

Deploying vs Initiating

Deploying a contract means to instantiate its bytecode in the blockchain, e.g. creating a new onchain contract. Nothing else. But for “initiating” I assume you might be referring to either its actual construction or its initialization.

Construction

Although you can read this very detailed post about how contract creation works, I’ll try to make it short by saying that if a contract has a constructor function defined it will be run once during the contract creation process to be dropped from the bytecode afterwards. Because of this, onchain contracts’ code do not include their constructor if they had any.

Initialization

While some contracts were designed to run some code at creation time (with constructors), some other contracts need to run some initiation logic at a different point of their lifecycles. This could be for many reasons, maybe you want to deploy a contract and only initiate it after some time, or maybe you can’t use a constructor in the first place like it’s the case with upgradeability proxy contracts.

1 Like

Thank you @martriay !

I was a bit confused by that author's statement I read on having to install a full node and having to have the characteristic of a full node to deploy smart contracts on the Ethereum blockchain. So I like the way you express it much better, "interacting" and "running" a full node. So one needs to at least interact with a full node to deploy a smart contract, although you don't need to be the full node itself, right?

Is it correct to say that the initiator of a smart contract is a (full) node of the Ethereum blockchain then? Or is the initiator the account holder who then interacts with a full node to deploy a smart contract? Basically a smart contract needs a full node to get deployed, there is no way around it, right?

I guess I did not see the difference between being the initiator of a smart contract and being the one deploying the smart contract. Also, once you deploy the smart contract, it does not mean that it has been triggered already, right? It just doesn't work autonomously, there needs to be a trigger and the trigger is a transaction by the initiator to the smart contract, right? Unless, the smart contract specifies that anyone can trigger it?

Is Remix also a provider in the sense of Infura and Alchemy or is it something else?

1 Like

Right

I'm not sure what you mean by initiator, where did you read it? But yes, you need to interact with a node at some point in order to deploy a contract.

During contract deployment, the deployment process includes executing the constructor function if there were any. Once a contract is deployed, its bytecode "sits there doing nothing" until someone/something calls it. This could be an address (externally owned) or even another contract. While anyone can call any function, the logic of the function could implement some sort of access control, as it could be "only the contract owner (stored as an address somewhere) can call this function".

2 Likes

I read it in an article by - what I now figured - a non-coder who is making reference to this blog post: https://codeburst.io/build-your-first-ethereum-smart-contract-with-solidity-tutorial-94171d6b1c4b
On there, I could not find the term initiator either, rather the term “initialising” in the context of “initialising blocks” or “private networks” and “kill()”. Confusing terminology really.

1 Like

Right, and it appears to be talking about launching the blockchain itself rather than a contract on it.

2 Likes