Deposit GenerationΒΆ

Users will usually first interact with a plasma chain by depositing their assets into a plasma deposit contract. Deposits usually consist of a single Ethereum transaction that locks some assets into the depoist contract. This page describes how a client can make a deposit and start using a plasma chain.

Plasma chain transactions transform the state of a range of state objects. The state of each range at a moment in time is described by a state object. Each state object specifies the address of a predicate contract and some additional arbitrary data which are used in tandem to manage ownership of an asset.

Users submit deposit transactions to a plasma deposit contract. Each deposit contract exposes a method deposit:

function deposit(uint256 _amount, StateObject _state) public payable

Where StateObject is the following struct:

struct StateObject {
    address predicate;
    bytes data;
}

deposit requires that users specify the _amount the asset being deposited and an initial state object, _state, that controls ownership of the asset. For example, users might use the SimpleOwnership predicate to control their asset.