@startuml
Actor Sender as S
Actor Receiver as R
group Blind an UTXO
R ->> R: Wallet::blind
note right of R: blinded UTXO is sort of "RGB address"
end
group Send blinded UTXO
R ->> S: blinded UTXO
note over R,S: through arbitrary communication channel
end
group Start sending process
S <<- S: Wallet::send(**donation=false**)
note left of S: send consignment to the receiver\ndon't broadcasting the TX yet
end
S ->> R: consignment
group Check consignment
R ->> R: Wallet::refresh
note right of R: validate consignment
note right of R: ACK if validation succeeds
end
R ->> S: ACK
group Send RGB assets
S <<- S: Wallet::refresh
note left of S: check if receiver ACKed\nbroadcast the TX if so
end
group Consume RGB transfer
R ->> R: Wallet::refresh
note right of R: check TX confirmations
end
group Consume RGB transfer
S <<- S: Wallet::refresh
note left of S: check TX confirmations
end
@enduml