LivepeerJS SDK

A module for interacting with Livepeer's smart contracts. The SDK is a core dependency of most LivepeerJS packages.
Table of Contents
Installation
yarn add @livepeer/sdk
Usage
Here's a code snippet showing instantiation and basic usage of the Livepeer SDK.
import LivepeerSDK from '@livepeer/sdk'
LivepeerSDK({ ... }).then(async (sdk) => {
const { rpc } = sdk
const tokens = await rpc.getTokenTotalSupply()
console.log(tokens)
})
To use with a testnet please instantiate with the following params:
const provider = "https://rinkeby.infura.io" #or your testnet of choice
const controllerAddress = "0x37dC71366Ec655093b9930bc816E16e6b587F968"
LivepeerSDK({ provider, controllerAddress }).then(async sdk => {
mycode...
})
The following section details the rpc API's function signatures and typedefs.
API
Table of Contents
module~exports
Livepeer SDK main module exports
default
Livepeer SDK factory function. Creates an instance of the Livepeer SDK -- an object with useful methods for interacting with Livepeer protocol smart contracts
Parameters
Examples
import LivepeerSDK from '@livepeer/sdk'
LivepeerSDK().then(sdk => {
})
Returns Promise<LivepeerSDK>
livepeer~rpc
"rpc" namespace of a Livepeer SDK instance
Examples
import LivepeerSDK from '@livepeer/sdk'
LivepeerSDK().then(({ rpc }) => {
})
getENSName
Gets the ENS name for an address. This is known as a reverse lookup.
Unfortunately, users must explicitly set their own resolver.
So most of the time, this method just returns an empty string
More info here:
(https://docs.ens.domains/en/latest/userguide.html#reverse-name-resolution)
Parameters
address
string address to look up an ENS name for
Examples
await rpc.getENSName('0xd34db33f...')
Returns Promise<string>
getENSAddress
Gets the address for an ENS name
Parameters
name
string ENS name to look up an address for
Examples
await rpc.getENSAddress('vitalik.eth')
Returns Promise<string>
getBlock
Gets a block by number, hash, or keyword ('earliest' | 'latest')
Parameters
Examples
await rpc.getBlock('latest')
"number": string,
"hash": string,
"parentHash": string,
"nonce": string,
"sha3Uncles": string,
"logsBloom": string,
"transactionsRoot": string,
"stateRoot": string,
"receiptsRoot": string,
"miner": string,
"mixHash": string,
"difficulty": string,
"totalDifficulty": string,
"extraData": string,
"size": string,
"gasLimit": string,
"gasUsed": string,
"timestamp": number,
"transactions": Array<Transaction>,
"transactionsRoot": string,
"uncles": Array<Uncle>,
}
Returns Promise<Block>
getEthBalance
Gets the ETH balance for an account
Parameters
addr
string ETH account address
Examples
await rpc.getEthBalance('0xf00...')
Returns Promise<string>
getUnbondingPeriod
Gets the unbonding period for transcoders
Examples
await rpc.getUnbondingPeriod()
Returns Promise<string>
getNumActiveTranscoders
Gets the number of active transcoders
Examples
await rpc.getNumActiveTranscoders()
Returns Promise<string>
getMaxEarningsClaimsRounds
Gets the maximum earnings for claims rounds
Examples
await rpc.getMaxEarningsClaimsRounds()
Returns Promise<string>
getTotalBonded
Gets the total amount of bonded tokens
Examples
await rpc.getTotalBonded()
Returns Promise<string>
getTokenTotalSupply
Gets the total supply of token (LTPU) available in the protocol
Examples
await rpc.getTokenTotalSupply()
Returns Promise<string>
getTokenBalance
Gets a user's token balance (LPTU)
Parameters
addr
string user's ETH address
Examples
await rpc.getTokenBalance('0xf00...')
Returns Promise<string>
getTokenInfo
Gets general information about tokens
Parameters
addr
string user's ETH address
Examples
await rpc.getTokenInfo()
Returns Promise<TokenInfo>
transferToken
Transfers tokens (LPTU) from one account to another
Parameters
to
string the account ETH address to send tokens to
amount
string the amount of token to send (LPTU)
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.transferToken('0xf00...', '10')
Returns Promise<TxReceipt>
getFaucetAmount
The amount of LPT the faucet distributes when tapped
Examples
await rpc.getFaucetAmount()
Returns Promise<string>
getFaucetWait
How often an address can tap the faucet (in hours)
Examples
await rpc.getFaucetWait()
Returns Promise<string>
getFaucetNext
Next timestamp at which the given address will be allowed to tap the faucet
Parameters
addr
string user's ETH address
Examples
await rpc.getFaucetNext()
Returns Promise<string>
getFaucetInfo
Info about the state of the LPT faucet
Parameters
addr
string user's ETH address
Examples
await rpc.getFaucetInfo('0xf00...')
Returns Promise<FaucetInfo>
getInflation
Gets the per round inflation rate
Examples
await rpc.getInflation()
Returns Promise<string>
getInflationChange
Gets the change in inflation rate per round until the target bonding rate is achieved
Examples
await rpc.getInflationChange()
Returns Promise<string>
getBroadcaster
Info about a broadcaster
Parameters
addr
string user's ETH address
Examples
await rpc.getBroadcaster('0xf00...')
Returns Promise<Broadcaster>
getDelegatorStatus
The delegator status of the given address
Parameters
addr
string user's ETH address
Examples
await rpc.getDelegatorStatus('0xf00...')
Returns Promise<string>
getDelegatorStake
The delegator's stake
Parameters
addr
string user's ETH address
Examples
await rpc.getDelegatorStake('0xf00...')
Returns Promise<string>
getDelegator
General info about a delegator
Parameters
addr
string user's ETH address
Examples
await rpc.getDelegator('0xf00...')
Returns Promise<Delegator>
getTranscoderIsActive
Whether or not the transcoder is active
Parameters
addr
string user's ETH address
Examples
await rpc.getTranscoderIsActive('0xf00...')
Returns Promise<boolean>
getTranscoderStatus
Gets the status of a transcoder
Parameters
addr
string user's ETH address
Examples
await rpc.getTranscoderStatus('0xf00...')
Returns Promise<string>
getTranscoderTotalStake
Gets a transcoder's total stake
Parameters
addr
string user's ETH address
Examples
await rpc.getTranscoderTotalStake('0xf00...')
Returns Promise<string>
getTranscoderPoolMaxSize
Gets a transcoder's pool max size
Examples
await rpc.getTranscoderPoolMaxSize()
Returns Promise<string>
getTranscoder
Gets info about a transcoder
Parameters
addr
string user's ETH address
Examples
await rpc.getTranscoder('0xf00...')
Returns Promise<Transcoder>
getTranscoders
Gets transcoders
Examples
await rpc.getTranscoders()
Returns Array<Transcoder>
getProtocolPaused
Whether the protocol is paused
Examples
await rpc.getProtocolPaused()
Returns Promise<boolean>
getProtocol
Gets the protocol
Examples
await rpc.getProtocol()
paused
totalTokenSupply
totalBondedToken
targetBondingRate
transcoderPoolMaxSize
}
Returns Promise<Protocol>
getRoundLength
Gets the length of a round (in blocks)
Examples
await rpc.getRoundLength()
Returns Promise<string>
getRoundsPerYear
Gets the estimated number of rounds per year
Examples
await rpc.getRoundsPerYear()
Returns Promise<string>
getCurrentRound
Gets the number of the current round
Examples
await rpc.getCurrentRound()
Returns Promise<string>
getCurrentRoundIsInitialized
Whether or not the current round is initalized
Examples
await rpc.getCurrentRoundIsInitialized()
Returns Promise<boolean>
getCurrentRoundStartBlock
The block at which the current round started
Examples
await rpc.getCurrentRoundStartBlock()
Returns Promise<string>
getLastInitializedRound
The previously intitialized round
Examples
await rpc.getLastInitializedRound()
Returns Promise<string>
getCurrentRoundInfo
Gets general information about the rounds in the protocol
Examples
await rpc.getCurrentRoundInfo()
Returns Promise<RoundInfo>
getTotalJobs
Total jobs that have been created
Examples
await rpc.getTotalJobs()
Returns Promise<string>
getJobVerificationRate
Verification rate for jobs
Examples
await rpc.getJobVerificationRate()
Returns Promise<string>
getJobVerificationPeriod
Verification period for jobs
Examples
await rpc.getJobVerificationPeriod()
Returns Promise<string>
getJobVerificationSlashingPeriod
Slashing period for jobs
Examples
await rpc.getJobVerificationSlashingPeriod()
Returns Promise<string>
getJobFinderFee
Finder fee for jobs
Examples
await rpc.getJobFinderFee()
Returns Promise<string>
getJobsInfo
Gets general info about the state of jobs in the protocol
Examples
await rpc.getJobsInfo()
Returns Promise<JobsInfo>
getJob
Gets a job by id
Parameters
Examples
await rpc.getJob('1337')
Returns Promise<Job>
getJobs
Gets a list of jobs
Parameters
$0
Object (optional, default {}
)
$0.to
$0.from
$0.blocksAgo
(optional, default 100*10000
)
$0.filters
...any
Examples
await rpc.getJobs()
Returns Array<Job>
tapFaucet
Gets LPT from the faucet
Parameters
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.tapFaucet('1337')
Returns Promise<TxReceipt>
initializeRound
Initializes the round
Parameters
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.initializeRound()
Returns Promise<TxReceipt>
claimEarnings
Claims token and eth earnings from the sender's lastClaimRound + 1
through a given endRound
Parameters
endRound
string the round to claim earnings until
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.claimEarnings()
Returns string
estimateGas
Gets the estimated amount of gas to be used by a smart contract
method.
Parameters
contractName
string : name of contract containing method you wish to find gas price for.
methodName: name of method on contract.
methodArgs: array of argument to be passed to the contract in specified order.
tx: (optioanl){
from: address - 0x...,
gas: number,
value: (optional) number or string containing number
}
methodName
string
methodArgs
Array
tx
(optional, default config.defaultTx
)
Examples
await rpc.estimateGas(
'BondingManager',
'bond',
[10, '0x00.....']
)
Returns Promise<number> containing estimated gas price
unbond
Unbonds LPT from an address
Parameters
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.unbond()
Returns Promise<TxReceipt>
setupTranscoder
Sets transcoder parameters
Parameters
rewardCut
string the block reward cut you wish to set
feeShare
string the fee share you wish to set
pricePerSegment
string the price per segment you wish to set
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.setupTranscoder('10', '10', '5')
Returns Promise<TxReceipt>
getTargetBondingRate
Get target bonding rate
Examples
await rpc.getTargetBondingRate()
Returns Promise<string>
deposit
Deposits ETH for broadcasting
Parameters
amount
string amount of ETH to deposit
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.deposit('100')
Returns Promise<TxReceipt>
withdraw
Withdraws deposited ETH
Parameters
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.withdraw()
Returns Promise<TxReceipt>
withdrawStake
Withdraws earned token (Transfers a sender's delegator bondedAmount
to their tokenBalance
)
Parameters
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.withdrawStake()
Returns TxReceipt
withdrawFees
Withdraws earned fees (Transfers a sender's delegator fees
to their ethBalance
)
Parameters
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.withdrawFees()
Returns TxReceipt
createJob
Creates a job
Parameters
streamId
string the stream id for the job
profiles
Array<string> a list of profiles to transcode the job into (optional, default [// default profiles 'P240p30fps4x3','P360p30fps16x9']
)
maxPricePerSegment
string the maximum LPTU price the broadcaster is willing to pay per segment
tx
TxConfig an object specifying the from
and gas
values of the transaction (optional, default config.defaultTx
)
Examples
await rpc.createJob('foo', [P240p30fps4x3', 'P360p30fps16x9'], '5')
// => TxReceipt {
// transactionHash: string,
// transactionIndex": BN,
// blockHash: string,
// blockNumber: BN,
// cumulativeGasUsed: BN,
// gasUsed: BN,
// contractAddress: string,
// logs: Array<Log {
// logIndex: BN,
// blockNumber: BN,
// blockHash: string,
// transactionHash: string,
// transactionIndex: string,
// address: string,
// data: string,
// topics: Array<string>
// }>
// }
Returns Promise<TxReceipt>
getDelegatorUnbondingLock
Get an unbonding lock for a delegator
Parameters
addr
string delegator's ETH address
unbondingLockId
string unbonding lock ID
Examples
await rpc.getDelegatorUnbondingLock('0xf00...', 1)
Returns Promise<UnbondingLock>
ABIPropDescriptor
ABI property descriptor
Type: Object
Properties
ContractArtifact
Mostly "truffle
-style" ABI artifacts but no bytecode/network properties required
Type: Object
Properties
LivepeerSDKOptions
SDK configuration options
Type: Object
Properties
controllerAddress
string? The address of the delpoyed Controller contract
provider
string? The ETH http provider for rpc methods
gas
number? the amount of gas to include with transactions by default
artifacts
Object<string, ContractArtifact> an object containing contract name -> ContractArtifact mappings
privateKeys
Object<string, string> an object containing public -> private key mappings. Should be specified if using the SDK for transactions without MetaMask (via CLI, etc)
account
(string | number) the account that will be used for transacting and data-fetching. Can be one of the publicKeys specified in the privateKeys
option or an index of an account available via MetaMask
LivepeerSDK
An object containing contract info and utility methods for interacting with the Livepeer protocol's smart contracts
Type: Object
Properties
config
Object<string, any> this prop is mostly for debugging purposes and could change a lot in the future. Currently, it contains the following props: abis
, accounts
, contracts
, defaultTx
, eth
constants
Object<string, any> Exposes some constant values. Currently, it contains the following props: ADDRESS_PAD
, DELEGATOR_STATUS
, EMPTY_ADDRESS
, TRANSCODER_STATUS
, VIDEO_PROFILES
, VIDEO_PROFILE_ID_SIZE
create
Function same as the createLivepeerSDK
function
events
Object<string, Object> Object mapping an event name -> contract event descriptor object
rpc
Object<string, Function> contains all of the rpc methods available for interacting with the Livepeer protocol
utils
Object<string, Function> contains utility methods. Mostly here just because. Could possibly be removed or moved into its own module in the future
TokenInfo
An object containing the total token supply and a user's account balance.
Type: Object
Properties
totalSupply
string total supply of token available in the protocol (LPTU)
balance
string user's token balance (LPTU)
TxConfig
Transaction config object
Type: Object
Properties
from
string the ETH account address to sign the transaction from
gas
number the amount of gas to include in the transaction
TxReceipt
Transaction receipt
Type: Object
Properties
transactionHash
string the transaction hash
transactionIndex
BN the transaction index
blockHash
string the transaction block hash
blockNumber
BN the transaction block number
cumulativeGasUsed
BN the cumulative gas used in the transaction
gasUsed
BN the gas used in the transaction
contractAddress
string the contract address of the transaction method
logs
Array<Log> an object containing logs that were fired during the transaction
Protocol
A Protocol struct
Type: Object
Properties
paused
boolean the protocol paused or not
totalTokenSupply
string total token supply for protocol
totalBondedToken
string total bonded token for protocol
targetBondingRate
string target bonding rate for protocol
transcoderPoolMaxSize
string transcoder pool max size
FaucetInfo
Information about the status of the LPT faucet
Type: Object
Properties
amount
string the amount distributed by the faucet
wait
string the faucet request cooldown time
next
string the next time a valid faucet request may be made
Broadcaster
A Broadcaster struct
Type: Object
Properties
address
string the ETH address of the broadcaster
deposit
string the amount of LPT the broadcaster has deposited
withdrawBlock
string the next block at which a broadcaster may withdraw their deposit
Delegator
A Delegator struct
Type: Object
Properties
allowance
string the delegator's LivepeerToken approved amount for transfer
address
string the delegator's ETH address
bondedAmount
string The amount of LPTU a delegator has bonded
delegateAddress
string the ETH address of the delegator's delegate
delegatedAmount
string the amount of LPTU the delegator has delegated
fees
string the amount of LPTU a delegator has collected
lastClaimRound
string the last round that the delegator claimed reward and fee pool shares
pendingFees
string the amount of ETH the delegator has earned up to the current round
pendingStake
string the amount of token the delegator has earned up to the current round
startRound
string the round the delegator becomes bonded and delegated to its delegate
status
string the delegator's status
withdrawableAmount
string the amount of LPTU a delegator can withdraw
withdrawRound
string the round the delegator can withdraw its stake
nextUnbondingLockId
string the next unbonding lock ID for the delegator
Transcoder
A Transcoder struct
Type: Object
Properties
active
boolean whether or not the transcoder is active
address
string the transcoder's ETH address
rewardCut
string % of block reward cut paid to transcoder by a delegator
feeShare
string % of fees paid to delegators by transcoder
lastRewardRound
string last round that the transcoder called reward
pendingRewardCut
string pending block reward cut for next round if the transcoder is active
pendingFeeShare
string pending fee share for next round if the transcoder is active
pendingPricePerSegment
string pending price per segment for next round if the transcoder is active
pricePerSegment
string price per segment for a stream (LPTU)
status
string the transcoder's status
totalStake
string total tokens delegated toward a transcoder (including their own)
UnbondingLock
An UnbondingLock struct
Type: Object
Properties
id
string the unbonding lock ID
delegator
string the delegator's ETH address
amount
string the amount of tokens being unbonded
withdrawRound
string the round at which unbonding period is over and tokens can be withdrawn
RoundInfo
An object containing information about the current round
Type: Object
Properties
id
string the number of the current round
initialized
boolean whether or not the current round is initialized
startBlock
string the start block of the current round
lastInitializedRound
string the last round that was initialized prior to the current
length
string the length of rounds
Block
An object containing information about an Ethereum block
Type: Object
Properties
number
string block number
hash
string block hash
parentHash
string parent has of the block
nonce
string block nonce
sha3Uncles
string block sha3 uncles
logsBloom
string logss bloom for the block
transactionsRoot
string block transaction root hash
stateRoot
string block state root hash
receiptsRoot
string block receipts root hash
miner
string block miner hash
mixHash
string block mixHash
difficulty
string difficulty int
totalDifficulty
string total difficulty int
extraData
string hash of extra data
size
string block size
gasLimit
string block gas limit
gasUsed
string gas used in block
timestamp
number block timestamp
transactions
string block transactions hash
uncles
string block uncles hash
transactions
Array<Transaction> transactions in the block
transactionsRoot
string root transaction hash
uncles
Array<Uncle> block uncles
JobsInfo
An object containing overview information about the jobs in the protocol
Type: Object
Properties
total
string the total number of jobs created
verificationRate
boolean the verification rate for jobs
verificationPeriod
string the verification period for jobs
verificationSlashingPeriod
string the slashing period for jobs
finderFee
string the finder fee for jobs
Job
A Job struct
Type: Object
Properties
jobId
string the id of the job
streamId
string the job's stream id
transcodingOptions
Array<TranscodingProfile> transcoding profiles
transcoder
string? the ETH address of the assigned transcoder
broadcaster
string the ETH address of the broadcaster who created the job
Log
An object representing a contract log
Type: Object
Properties
logIndex
BN the log index
blockNumber
BN the log block number
blockHash
string the log block hash
transactionHash
string the log's transaction hash
transactionIndex
BN the log's transaction index
address
string the log's address
data
string the log's data
topics
Array<string> the log's topics