I've read this post and this one and I'm still wondering if there is a way to deploy a contract without fully syncing the blockchain, for example by using a light client. I would like try my hand at writing contracts (and be more helpful to people on StackExchange!) but I'm short on disk space and would prefer to use a public test net rather than a private chain. My backup plan is to deploy a test net node on a small VPS instance I'm already paying for, so I won't cry if the answer is "you need to fully sync the blockchain".
If you want to start coding smart contract this is a quite smooth environment to set up:
- Use Remix online IDE for coding and link it with your local node
- Download testRPC on your PC and run a local node (no sync needed & light weight)
- Set up Ethereum Wallet to run on your local node
Then you can deploy contracts and test them through MEW while checking out the txs with your testRPC view. I found myself well with these settings. Hope it helps.
To submit a contract to the Ethereum blockchain, the contract creation transaction needs to be mined.
You do not need a fully synced copy of the chain to submit a contract.
In fact, if you wanted to, you could sign a deployment transaction offline, write it on a piece of paper and pass it to someone else to submit to the chain.
To see that a contract has been deployed at a given address you do not need the chain fully synced. Given however that Ethereum is essentially a state machine, you would need to query a fully synced node to query the most recent state (that would include your deployed contract).
This can be done through any public node. For example Infura.io