diff --git a/dip-0027.md b/dip-0027.md index 8a575f11..10e9e78a 100644 --- a/dip-0027.md +++ b/dip-0027.md @@ -20,6 +20,7 @@ * [Overview](#overview) * [Asset Locking](#asset-locking) * [Asset Lock Transaction](#asset-lock-transaction) + * [Version 2: Automatic Credit Assignment](#version-2-automatic-credit-assignment) * [Proof of Finality](#proof-of-finality) * [Asset Unlocking](#asset-unlocking) * [Asset Unlock Transaction](#asset-unlock-transaction) @@ -48,6 +49,8 @@ Switching to the credit pool relieves this issue by allowing withdrawals to be p * [DIP-0007: LLMQ Signing Requests / Sessions](https://github.com/dashpay/dips/blob/master/dip-0007.md) * [DIP-0010: LLMQ InstantSend](https://github.com/dashpay/dips/blob/master/dip-0010.md) * [DIP-0011: Identities](https://github.com/dashpay/dips/blob/master/dip-0011.md) +* [DIP-0017: Dash Platform Payment Addresses and HD Derivation](https://github.com/dashpay/dips/blob/master/dip-0017.md) +* [DIP-0018: Dash Platform Payment Address Encodings](https://github.com/dashpay/dips/blob/master/dip-0018.md) ## System Requirements @@ -84,6 +87,16 @@ Each Asset Lock transaction must create an unspendable output by using an OP_RET * Its value is the amount of Dash to be locked * The sum of all TxOut amounts must equal the value of the output +#### Version 2: Automatic Credit Assignment + +When Dash Platform implemented the Platform address system defined by [DIP-17](https://github.com/dashpay/dips/blob/master/dip-0017.md), there was no way to directly fund a Platform address from the Core chain. Version 2 Asset Lock transactions enable transferring Core chain funds to Platform addresses by signalling that each entry in `credit_outputs` MUST be automatically credited to the Platform address matching the entry's public key hash or script hash. No accompanying state transition is required. + +Version 2 extends the set of allowed `credit_outputs[i].scriptPubKey` forms to `{P2PKH, P2SH}`; all other consensus rules are unchanged from version 1. + +The `v24` hard fork enables `version = 2`: prior to activation only `version = 1` is valid; after activation `version ∈ {1, 2}` is valid. + +[DIP-0018](./dip-0018.md) Platform P2PKH addresses (`dash1k…`, `tdash1k…`) MUST be encoded as P2PKH `credit_outputs` entries; Platform P2SH addresses (`dash1s…`, `tdash1s…`) MUST be encoded as P2SH `credit_outputs` entries. + ### Proof of Finality It is important to note that Dash Core transactions achieve finality through ChainLocks and InstantSend locks. Therefore, these locks can be used to prove that value has been added to the credit pool and is ready for Platform use. For example, Platform can safely increase an Identity’s balance without concerns that the related Asset Lock transaction will be double-spent.