I'd prefer the following here:

```Go
sortedCoins := make([]Coin, 0, len(coins))
sortedCoins = append(sortedCoins, coins...)
```

It's quite minor, but you create the backing array of the right size to begin with rather than creating an empty array that immediately needs to be grown (hence leaving the original to be GCd) as the following assembly breakdown shows:

> 0057 (D:\Projects\mygo\src\github.com\conformal\btcutil\foo\foo.go:5) PCDATA  $0,$64
> 0058 (D:\Projects\mygo\src\github.com\conformal\btcutil\foo\foo.go:5) CALL    ,runtime.growslice+0(SB)
> 0059 (D:\Projects\mygo\src\github.com\conformal\btcutil\foo\foo.go:5) MOVQ    coins+-88(SP),R9

versus

> 0032 (D:\Projects\mygo\src\github.com\conformal\btcutil\foo\foo.go:5) PCDATA  $0,$48
> 0033 (D:\Projects\mygo\src\github.com\conformal\btcutil\foo\foo.go:5) CALL    ,runtime.makeslice+0(SB)