X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=account%2Faccounts.go;h=427b0421bbb1dc056f9a8bafcad10f06c1b11193;hp=fd76b5bf69020d6aee9a6b26c146aa09ef60d2bc;hb=a7c5e4f0b8dab4ffe44a5e20fe5e1e30db14026c;hpb=e58c4b1e2f0573318ffc699919599609ccf5da10 diff --git a/account/accounts.go b/account/accounts.go index fd76b5bf..427b0421 100644 --- a/account/accounts.go +++ b/account/accounts.go @@ -790,7 +790,10 @@ func (m *Manager) SaveControlPrograms(progs ...*CtrlProgram) error { func (m *Manager) CreatePeginAddress(accountID string, change bool) (string, []byte, error) { // 通过配置获取 - claimCtrlProg, _ := m.CreateAddress(accountID, change) + claimCtrlProg, err := m.CreateAddress(accountID, change) + if err != nil { + return "", nil, err + } claimScript := claimCtrlProg.ControlProgram federationRedeemScript := vmutil.CalculateContract(consensus.ActiveNetParams.FedpegXPubs, claimScript) @@ -842,27 +845,35 @@ func (m *Manager) CreatePeginContractPrograms(accountID string, change bool) (st } -func (m *Manager) CreatePeginContractAddress(accountID string, change bool) (string, []byte, error) { +func (m *Manager) CreatePeginContractAddress(accountID string, change bool) (string, []byte, []byte, error) { // 通过配置获取 claimCtrlProg, err := m.CreateAddress(accountID, change) if err != nil { - return "", nil, err + return "", nil, nil, err } claimScript := claimCtrlProg.ControlProgram peginContractPrograms, err := pegin_contract.GetPeginContractPrograms(claimScript) if err != nil { - return "", nil, err + return "", nil, nil, err } scriptHash := crypto.Sha256(peginContractPrograms) address, err := common.NewPeginAddressWitnessScriptHash(scriptHash, &consensus.ActiveNetParams) if err != nil { - return "", nil, err + return "", nil, nil, err } - return address.EncodeAddress(), claimScript, nil + redeemContract := address.ScriptAddress() + + program := []byte{} + program, err = vmutil.P2WSHProgram(redeemContract) + if err != nil { + return "", nil, nil, err + } + + return address.EncodeAddress(), program, claimScript, nil }