FC_ASSERT(vesting_shares>=asset(0,VESTS_SYMBOL),"Delegation cannot be negative");
}
voidrecurrent_transfer_operation::validate()const
{try{
validate_account_name(from);
validate_account_name(to);
FC_ASSERT(amount.symbol.is_vesting()==false,"Transfer of vesting is not allowed.");
FC_ASSERT(amount.amount>=0,"Cannot transfer a negative amount (aka: stealing)");
FC_ASSERT(recurrence>=HIVE_MIN_RECURRENT_TRANSFERS_RECURRENCE,"Cannot set a transfer recurrence that is less than ${recurrence} hours",("recurrence",HIVE_MIN_RECURRENT_TRANSFERS_RECURRENCE));
FC_ASSERT(memo.size()<HIVE_MAX_MEMO_SIZE,"Memo is too large");
FC_ASSERT(fc::is_utf8(memo),"Memo is not UTF8");
FC_ASSERT(from!=to,"Cannot set a transfer to yourself");
FC_ASSERT(executions>=2,"Executions must be at least 2, if you set executions to 1 the recurrent transfer will execute immediately and delete itself. You should use a normal transfer operation");
FC_ASSERT(fc::hours(recurrence*executions).to_seconds()<fc::days(HIVE_MAX_RECURRENT_TRANSFER_END_DATE).to_seconds(),"Cannot set a transfer that would last for longer than ${days} days",("days",HIVE_MAX_RECURRENT_TRANSFER_END_DATE));