1.0.8 • Published 5 years ago

@openstfoundation/openst-payments v1.0.8

Weekly downloads
-
License
LGPL-3.0
Repository
github
Last release
5 years ago

OpenST Payments - Advance Payment infrastructure on top of the OpenST network

Latest version Travis Downloads per month Gitter: JOIN CHAT

While OpenST 0.9 is available as-is for anyone to use, we caution that this is early stage software and under heavy ongoing development and improvement. Please report bugs and suggested improvements.

Install OpenST Payments

npm install @openstfoundation/openst-payments --save

Run Test Chain

cd mocha_test/scripts/
sh start_test_chain.sh

Set EVN Variables

Setup Initial Setup Variables:

export OST_UTILITY_GETH_RPC_PROVIDER=''
export OST_UTILITY_GETH_WS_PROVIDER=''
export OST_UTILITY_DEPLOYER_ADDR=''
export OST_UTILITY_DEPLOYER_PASSPHRASE=''
export OST_UTILITY_OPS_ADDR=''
export OST_UTILITY_OPS_PASSPHRASE=''

Deploy Branded Token Contract:

node tools/deploy/EIP20TokenMock.js conversionRate symbol name decimals gasPrice

Deploy Workers Contract:

node tools/deploy/workers.js gasPrice chainId

Deploy Airdrop Contract:

node tools/deploy/airdrop.js brandedTokenContractAddress baseCurrency workerContractAddress airdropBudgetHolder gasPrice chainId

Set Caching Engine:

export OST_CACHING_ENGINE='none'
For using redis/memcache as cache engine refer - [OpenSTFoundation/ost-price-oracle](https://github.com/OpenSTFoundation/ost-price-oracle)

Set DB Details For Payments/Airdrop:

export OP_MYSQL_HOST=''
export OP_MYSQL_USER=''
export OP_MYSQL_PASSWORD=''
export OP_MYSQL_DATABASE=''
export OP_MYSQL_CONNECTION_POOL_SIZE='5'

Create Airdrop Tables:

node migrations/create_tables.js 

Deploy Service Examples:

const OpenSTPayment = require('@openstfoundation/openst-payments')
  , Deploy = OpenSTPayment.services.deploy
;  
  // Deploy Workers
  const deployWorkerObject = new Deploy.workers({
    gas_price: gasPrice,
    options: {returnType: 'txHash'}
  });
  deployWorkerObject.perform();
  
  // Deploy Airdrop
  const deployAirdropObject = new Deploy.airdrop({
    branded_token_contract_address: brandedTokenAddress,
    base_currency: baseCurrency,
    worker_contract_address: workerContractAddress,
    airdrop_budget_holder: airdropBudgetHolder,
    gas_price: gasPrice,
    options: {returnType: 'txHash'}
  });
  deployAirdropObject.perform();
  

OpsManaged Service Examples

const OpenSTPayment = require('@openstfoundation/openst-payments')
  , OpsManaged = OpenSTPayment.services.opsManaged
;  
  // Set Ops Address
  const setOpsObject = new OpsManaged.setOps({
    contract_address: contractAddress,
    gas_price: gasPrice,
    chain_id: chainId,
    deployer_address: deployerAddress,
    deployer_passphrase: deployerPassphrase,
    ops_address: opsAddress,
    options: {returnType: 'txHash'}
  });
  setOpsObject.perform();
    
  // Get Ops Address
  const getOpsObject = new OpsManaged.getOps({
    contract_address: contractAddress,
    gas_price: gasPrice,
    chain_id: chainId
  });
  getOpsObject.perform();

Workers Service Examples

const OpenSTPayment = require('@openstfoundation/openst-payments')
  , Workers = OpenSTPayment.services.workers
;  
  // Set Worker
  const setWorkerObject = new Workers.setWorker({
      workers_contract_address: constants.workersContractAddress,
      sender_address: constants.ops,
      sender_passphrase: constants.opsPassphrase,
      worker_address: workerAddress,
      deactivation_height: deactivationHeight.toString(10),
      gas_price: gasPrice,
      chain_id: chainId,
      options: {returnType: 'txHash'}
  });
  setWorkerObject.perform();
  
  // Is Worker
  const isWorkerObject = new Workers.isWorker({
      workers_contract_address: workersContractAddress,
      worker_address: workerAddress,
      chain_id: chainId
  });
  isWorkerObject.perform();

Airdrop Management Service Examples:

const OpenSTPayment = require('@openstfoundation/openst-payments')
  , AirdropManager = OpenSTPayment.services.airdropManager
;  
  // Register Airdrop
  const registerObject = new AirdropManager.register({
    airdrop_contract_address: airdropContractAddress,
    chain_id: chainId
  });
  registerObject.perform();
  
  // Set Price Oracle
  const setPriceOracleObject = new AirdropManager.setPriceOracle({
      airdrop_contract_address: airdropContractAddress,
      chain_id: chainId,
      sender_address: senderAddress,
      sender_passphrase: senderPassphrase,
      currency: currency,
      price_oracle_contract_address: priceOracleContractAddress,
      gas_price: gasPrice,
      options: {tag: 'airdrop.setPriceOracle', returnType: 'txHash'}
  });
  setPriceOracleObject.perform();
  
  // Set Accepted Margin
  const setAcceptedMarginObject = new AirdropManager.setAcceptedMargin({
    airdrop_contract_address: airdropContractAddress,
    chain_id: chainId,
    sender_address: senderAddress,
    sender_passphrase: senderPassphrase,
    currency: currency,
    accepted_margin: acceptedMargin,
    gas_price: gasPrice,
    options: {tag: 'airdrop.setAcceptedMargin', returnType: 'txHash'}
  });
  setAcceptedMarginObject.perform();
  
  // Transfer Amount to airdrop budget holder
  const transferObject = new AirdropManager.transfer({
    sender_address: senderAddress,
    sender_passphrase: senderPassphrase,
    airdrop_contract_address: airdropContractAddress,
    amount: airdropBudgetAmountInWei,
    gas_price: gasPrice,
    chain_id: chainId,
    options: {tag: 'airdrop.transfer', returnType: 'txHash'}
  });
  transferObject.perform();
  
  // Approve airdrop budget holder
  const approveObject = new AirdropManager.approve({
    airdrop_contract_address: airdropContractAddress,
    airdrop_budget_holder_passphrase: airdropBudgetHolderPassphrase,
    gas_price: gasPrice,
    chain_id: chainId,
    options: {tag: 'airdrop.approve', returnType: 'txHash'}
  });
  approveObject.perform();
  
  // Allocate airdrop amount to users in batch
  const batchAllocatorObject = new AirdropManager.batchAllocator({
    airdrop_contract_address: airdropContractAddress,
    transaction_hash: transactionHash,
    airdrop_users: {userAddress1: {airdropAmount: amountInWei, expiryTimestamp: 0}, userAddress2: {airdropAmount: amountInWei, expiryTimestamp: 0}},
    chain_id: chainId
  });
  batchAllocatorObject.perform();
  
  // Get Users Airdrop Balance
  const userBalanceObject = new AirdropManager.userBalance({
    airdrop_contract_address: airdropContractAddress,
    chain_id: chainId,
    user_addresses: [user1, user2]
  });
  userBalanceObject.perform();
  
  // Call Pay method
  const payObject = new AirdropManager.pay({
    airdrop_contract_address: airdropContractAddress,
    chain_id: chainId,
    sender_worker_address: workerAddress,
    sender_worker_passphrase: workerPassphrase,
    beneficiary_address: beneficiary,
    transfer_amount: transferAmount.toString(10),
    commission_beneficiary_address: commissionBeneficiary,
    commission_amount: commissionAmount.toString(10),
    currency: currency,
    intended_price_point: intendedPricePoint,
    spender: spenderAddress,
    gas_price: gasPrice,
    options: {tag:'airdrop.pay', returnType: 'txHash'}
  });
  payObject.perform()
  

For further implementation details, please refer to the API documentation.

1.0.10-beta.37

5 years ago

1.0.10-beta.36

5 years ago

1.0.10-beta.35

5 years ago

1.0.10-beta.34

5 years ago

1.0.10-beta.33

5 years ago

1.0.10-beta.32

5 years ago

1.0.10-beta.30

6 years ago

1.0.10-beta.29

6 years ago

1.0.10-beta.28

6 years ago

1.0.10-beta.27

6 years ago

1.0.10-beta.26

6 years ago

1.0.10-beta.25

6 years ago

1.0.10-beta.24

6 years ago

1.0.10-beta.23

6 years ago

1.0.10-beta.22

6 years ago

1.0.10-beta.21

6 years ago

1.0.10-beta.20

6 years ago

1.0.10-beta.19

6 years ago

1.0.10-beta.18

6 years ago

1.0.10-beta.17

6 years ago

1.0.10-beta.16

6 years ago

1.0.10-beta.15

6 years ago

1.0.10-beta.14

6 years ago

1.0.10-beta.13

6 years ago

1.0.10-beta.12

6 years ago

1.0.10-beta.11

6 years ago

1.0.10-beta.10

6 years ago

1.0.10-beta.9

6 years ago

1.0.10-beta.8

6 years ago

1.0.10-beta.6

6 years ago

1.0.10-beta.5

6 years ago

1.0.9-beta.14

6 years ago

1.0.10-beta.4

6 years ago

1.0.10-beta.3

6 years ago

1.0.10-beta.2

6 years ago

1.0.10-beta.1

6 years ago

1.0.9-beta.13

6 years ago

1.0.9-beta.12

6 years ago

1.0.9-beta.11

6 years ago

1.0.9-beta.10

6 years ago

1.0.9-beta.9

6 years ago

1.0.9-beta.8

6 years ago

1.0.9-beta.7

6 years ago

1.0.9-beta.6

6 years ago

1.0.9-beta.5

6 years ago

1.0.9-beta.4

6 years ago

1.0.9-beta.3

6 years ago

1.0.9-beta.2

6 years ago

1.0.9-beta.1

6 years ago

1.0.8

6 years ago

1.0.8-beta.14

6 years ago

1.0.8-beta.13

6 years ago

1.0.8-beta.12

6 years ago

1.0.8-beta.11

6 years ago

1.0.8-beta.10

6 years ago

1.0.8-beta.9

6 years ago

1.0.8-beta.8

6 years ago

1.0.8-beta.7

6 years ago

1.0.8-beta.6

6 years ago

1.0.8-beta.5

6 years ago

1.0.8-beta.4

6 years ago

1.0.8-beta.3

6 years ago

1.0.8-beta.2

6 years ago

1.0.8-beta.1

6 years ago

1.0.7

6 years ago

1.0.7-beta.1

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.5-beta.18

6 years ago

1.0.5-beta.17

6 years ago

1.0.5-beta.16

6 years ago

1.0.5-beta.15

6 years ago

1.0.5-beta.14

6 years ago

1.0.5-beta.13

6 years ago

1.0.5-beta.12

6 years ago

1.0.5-beta.11

6 years ago

1.0.5-beta.10

6 years ago

1.0.5-beta.9

6 years ago

1.0.5-beta.8

6 years ago

1.0.5-beta.7

6 years ago

1.0.5-beta.6

6 years ago

1.0.5-beta.5

6 years ago

1.0.5-beta.4

6 years ago

1.0.5-beta.3

6 years ago

1.0.5-beta.2

6 years ago

1.0.5-beta.1

6 years ago

1.0.4-beta.3

6 years ago

1.0.4-beta.2

6 years ago

1.0.4-beta.1

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

1.0.0-beta.34

6 years ago

1.0.0-beta.33

6 years ago

1.0.0-beta.32

6 years ago

1.0.0-beta.31

6 years ago

1.0.0-beta.30

6 years ago

1.0.0-beta.29

6 years ago

1.0.0-beta.28

6 years ago

1.0.0-beta.27

6 years ago

1.0.0-beta.26

6 years ago

1.0.0-beta.25

6 years ago

1.0.0-beta.24

6 years ago

1.0.0-beta.23

6 years ago

1.0.0-beta.22

6 years ago

1.0.0-beta.21

6 years ago

1.0.0-beta.20

6 years ago

1.0.0-beta.19

6 years ago

1.0.0-beta.18

6 years ago

1.0.0-beta.17

6 years ago

1.0.0-beta.16

6 years ago

1.0.0-beta.15

6 years ago

1.0.0-beta.14

6 years ago

1.0.0-beta.13

6 years ago

1.0.0-beta.12

6 years ago

1.0.0-beta.11

6 years ago

1.0.0-beta.10

6 years ago

1.0.0-beta.9

6 years ago

1.0.0-beta.8

6 years ago

1.0.0-beta.7

6 years ago

1.0.0-beta.6

6 years ago

1.0.0-beta.5

6 years ago

1.0.0-beta.4

6 years ago

1.0.0-beta.2

6 years ago

1.0.0-beta.1

6 years ago