public override Empty Unlock(UnlockInput input) { AssertLockAddress(input.Symbol, input.To); AssertValidToken(input.Symbol, input.Amount); var fromVirtualAddress = Hash.FromRawBytes(Context.Sender.Value.Concat(input.LockId.Value).ToArray()); Context.SendVirtualInline(fromVirtualAddress, Context.Self, nameof(Transfer), new TransferInput { To = input.From, Symbol = input.Symbol, Amount = input.Amount, Memo = input.Usage, }); return(new Empty()); }
public override Empty Unlock(UnlockInput input) { AssertSystemContractOrLockWhiteListAddress(input.Symbol); Assert(Context.Origin == input.Address, "Unlock behaviour should be initialed by origin address."); AssertValidToken(input.Symbol, input.Amount); var fromVirtualAddress = HashHelper.ComputeFrom(Context.Sender.Value.Concat(input.Address.Value) .Concat(input.LockId.Value).ToArray()); Context.SendVirtualInline(fromVirtualAddress, Context.Self, nameof(Transfer), new TransferInput { To = input.Address, Symbol = input.Symbol, Amount = input.Amount, Memo = input.Usage, }); return(new Empty()); }
private void UnlockToken(UnlockInput unlockInput) { ValidateTokenContract(); State.TokenContract.Unlock.Send(unlockInput); }