// Transfers all the coins and hours in genesis block to an address func transferAllToAddress(v *visor.Visor, gb visor.SignedBlock, dest coin.Address) (visor.SignedBlock, error) { sb := visor.SignedBlock{} if gb.Block.Head.BkSeq != uint64(0) { return sb, errors.New("Must be genesis block") } // Send the entire genesis block to dest if len(gb.Block.Body.Transactions) != 1 { log.Panic("Genesis block has only 1 txn") } tx := gb.Block.Body.Transactions[0] if len(tx.Out) != 1 { log.Panic("Genesis block has only 1 output") } amt := visor.NewBalance(tx.Out[0].Coins, tx.Out[0].Hours) tx, err := v.Spend(amt, 0, dest) if err != nil { return sb, err } // Add the tx to the unconfirmed pool so it can get picked up err, _ = v.RecordTxn(tx) if err != nil { return sb, err } // Put the tx in a block and commit sb, err = v.CreateAndExecuteBlock() if err != nil { return sb, err } return sb, nil }
func transferCoins(mv *visor.Visor, v *visor.Visor) error { // Give the nonmaster some money to spend addr := v.Wallet.GetAddresses()[0] tx, err := mv.Spend(visor.Balance{10 * 1e6, 0}, 0, addr) if err != nil { return err } mv.RecordTxn(tx) sb, err := mv.CreateAndExecuteBlock() if err != nil { return err } return v.ExecuteSignedBlock(sb) }
func makeBlocks(mv *visor.Visor, n int) ([]visor.SignedBlock, error) { dest := visor.NewWalletEntry() blocks := make([]visor.SignedBlock, n) for i := 0; i < n; i++ { tx, err := mv.Spend(visor.Balance{10 * 1e6, 0}, 0, dest.Address) if err != nil { return nil, err } mv.RecordTxn(tx) sb, err := mv.CreateAndExecuteBlock() if err != nil { return nil, err } blocks[i] = sb } return blocks, nil }