Managing Payments for Freelance Writing Projects with Steemit Cryptocurrency Escrow

in #burnsteem255 months ago

Introduction to Steemit Escrow

Steemit is built on the Ethereum blockchain and allows users to create autonomous smart contracts known as escrows. An escrow acts as an impartial third-party holder of funds that can only be released according to the agreed-upon terms encoded in the contract. This allows buyers and sellers to transact in a trustless manner without relying on each other for fulfillment or payment.

When setting up an escrow, the buyer deposits cryptocurrency into the contract and specifies exactly what conditions must be met for the seller to receive the funds. This provides assurances for both parties and removes reliance on trust by programmatically enforcing their agreement.

Using Escrow for Publishing Projects

Steemit escrow is well-suited for managing ongoing payments between publishers and freelance writers for content production work. Some key aspects of how it could be implemented:

  • The publisher acts as the buyer, funding escrows for each project or batch of work

  • The writer is the seller and recipient of funds held in escrow

  • Escrow contracts specify deliverables, deadlines, and associated payment amounts

  • Publishers remain in control of funds until terms are verified on the blockchain

  • Dynamic payment schedules can be set up to release funds incrementally

  • All transaction details and timelines are immutably encoded for transparency

By wrapping agreements in self-executing smart contracts, escrow establishes clear expectations and properly incentivizes both sides to fulfill their obligations.

Implementing the Escrow Process

To utilize escrow, publishers and writers would take the following steps:

  1. Negotiate rates, deliverables, and payment schedule for the planned work
  1. The publisher deploys an escrow contract on Steemit specifying the agreed terms
  1. STEEM is deposited into escrow by the publisher to be held until conditions are met
  1. The writer begins work upon receiving hash of escrow details for verification
  1. Deliverables are submitted to the publisher for publication/approval
  1. The publisher verifies on-chain, triggering STEEM to be autonomously released
  1. Further payments are automatically dispersed per the encoded schedule
  1. Escrow settles once complete, refunding any unused deposited funds

By codifying their agreement into an escrow contract, publishers and writers can streamline the collaborative process and payment mechanics throughout projects.

Code Sample - Triggering Fund Releases


// Get escrow contract instance

const escrow = Escrow.at(contractAddress);


// Writer submits deliverable

escrow.submitWork(deliverableHash)

.send({from: writer})

.then(() => {

console.log('Work submitted');

});


// Publisher verifies and releases funds

escrow.verifyWork(deliverableHash)

.send({from: publisher})

.then(() => {

console.log('Funds released!');

});

This demonstrates how the escrow contract's API could be used to programmatically trigger payment releases upon completion of milestones.

Here are some example code snippets that could be used to implement the escrow process on Steemit:

Deploying the Escrow Contract


// Deploy escrow contract

const Escrow = new web3.eth.Contract(abi);

const deployTx = Escrow.deploy({

data: '0x'+bytecode,

arguments: [publisher, writer, amount, deadline]

});


deployTx.send({

from: publisher,

gas: 470000,

gasPrice: '20000000000'

})

.then(() => {

console.log('Escrow Contract Deployed!');

});

Triggering Fund Releases


// Get escrow contract instance

const escrow = Escrow.at(contractAddress);


// Writer submits deliverable

escrow.submitWork(deliverableHash)

.send({from: writer})

.then(() => {

console.log('Work submitted');

});


// Publisher verifies and releases funds

escrow.verifyWork(deliverableHash)

.send({from: publisher})

.then(() => {

console.log('Funds released!');

});

Cancelling & Refunding


// Cancel contract if deadline missed

escrow.cancel()

.send({from: publisher})

.then(() => {

console.log('Escrow cancelled');


// Refund publisher

escrow.refund()

.send({from: publisher})

.then(() => {

console.log('Funds refunded');

});

});

These examples demonstrate how the core escrow functions like deployment, payment triggers, and cancellation could be programmed using the contract's JavaScript API. Proper error handling and validation would need to be added for production usage.