Solidity code for deploying a crowdfunding smart contract.
A beneficiary can open the funding session setting a closing date and specified funding target. Donors can send ether to the project within the funding session. When the contract ends there are two options. If the target amount has been met then the ether is sent to the beneficiary. If the target has not been met then the donors can withdraw their funds and the beneficiary recieves nothing.