• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang types.EmptyHash函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/gitchain/gitchain/types.EmptyHash函数的典型用法代码示例。如果您正苦于以下问题:Golang EmptyHash函数的具体用法?Golang EmptyHash怎么用?Golang EmptyHash使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了EmptyHash函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: TestEncodeDecode

func TestEncodeDecode(t *testing.T) {
	privateKey := generateKey(t)
	txn1, rand := trans.NewNameReservation("my-new-repository")
	txn1e := trans.NewEnvelope(types.EmptyHash(), txn1)
	txn2, _ := trans.NewNameAllocation("my-new-repository", rand)
	txn2e := trans.NewEnvelope(types.EmptyHash(), txn2)
	txn3, _ := trans.NewNameDeallocation("my-new-repository")
	txn3e := trans.NewEnvelope(types.EmptyHash(), txn3)

	txn1e.Sign(privateKey)
	txn2e.Sign(privateKey)
	txn3e.Sign(privateKey)

	transactions := []*trans.Envelope{txn1e, txn2e, txn3e}
	block, err := NewBlock(types.EmptyHash(), HIGHEST_TARGET, transactions)
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	enc, err := block.Encode()
	if err != nil {
		t.Errorf("error while encoding block: %v", err)
	}

	block1, err := Decode(enc)
	if err != nil {
		t.Errorf("error while encoding block: %v", err)
	}

	assert.Equal(t, block, block1, "encoded and decoded block should be identical to the original one")
}
开发者ID:linhua55,项目名称:gitchain,代码行数:31,代码来源:block_test.go


示例2: TestListRepository

func TestListRepository(t *testing.T) {

	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}

	repo := repository.NewRepository("test", repository.PENDING, types.EmptyHash())
	err = db.PutRepository(repo)
	if err != nil {
		t.Errorf("error putting repository: %v", err)
	}

	repo1 := repository.NewRepository("hello_world", repository.ACTIVE, types.EmptyHash())
	err = db.PutRepository(repo1)
	if err != nil {
		t.Errorf("error putting repository: %v", err)
	}

	actualRepositories := db.ListRepositories()
	sort.Strings(actualRepositories)
	expectedRepositories := []string{"test", "hello_world"}
	sort.Strings(expectedRepositories)

	assert.Equal(t, actualRepositories, expectedRepositories)
}
开发者ID:jeffslofish,项目名称:gitchain,代码行数:28,代码来源:repository_test.go


示例3: TestNewBlockNoTx

func TestNewBlockNoTx(t *testing.T) {
	transactions := []*trans.Envelope{}
	block1, err := NewBlock(types.EmptyHash(), HIGHEST_TARGET, transactions)

	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	assert.Equal(t, transactions, block1.Transactions)
	assert.Equal(t, block1.MerkleRootHash, types.EmptyHash())
}
开发者ID:linhua55,项目名称:gitchain,代码行数:11,代码来源:block_test.go


示例4: TestGetNextBlock

func TestGetNextBlock(t *testing.T) {
	transactions, _ := fixtureSampleTransactions(t)

	blk, err := block.NewBlock(types.EmptyHash(), block.HIGHEST_TARGET, transactions)
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	blk1, err := block.NewBlock(blk.Hash(), block.HIGHEST_TARGET, []*transaction.Envelope{})
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}

	err = db.PutBlock(blk, false)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}

	blk_, err := db.GetNextBlock(types.EmptyHash())
	if err != nil {
		t.Errorf("error getting next block: %v", err)
	}
	assert.Equal(t, blk, blk_)

	err = db.PutBlock(blk1, false)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}

	blk1_, err := db.GetNextBlock(blk.Hash())
	if err != nil {
		t.Errorf("error getting next block: %v", err)
	}
	assert.Equal(t, blk1_, blk1)

	block0, err := db.GetBlock(types.EmptyHash())
	if err == nil {
		t.Errorf("error getting zero block (no error thrown)")
	}
	if block0 != nil {
		t.Errorf("error getting zero block")
	}
	assert.True(t, nil == block0)
}
开发者ID:linhua55,项目名称:gitchain,代码行数:51,代码来源:block_test.go


示例5: TestNewBlockSingleTx

func TestNewBlockSingleTx(t *testing.T) {
	privateKey := generateKey(t)
	txn1, _ := trans.NewNameReservation("my-new-repository", &privateKey.PublicKey)

	transactions := []trans.T{txn1}
	block1, err := NewBlock(types.EmptyHash(), HIGHEST_TARGET, transactions)

	if err != nil {
		t.Errorf("can't create a block because of %v", err)
		return
	}

	assert.Equal(t, transactions, block1.Transactions)
	assert.NotEqual(t, block1.MerkleRootHash, types.EmptyHash())
}
开发者ID:josephyzhou,项目名称:gitchain,代码行数:15,代码来源:block_test.go


示例6: TestListRefs

func TestListRefs(t *testing.T) {

	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}

	repo := repository.NewRepository("myrepo", repository.ACTIVE, types.EmptyHash())
	err = db.PutRepository(repo)
	if err != nil {
		t.Errorf("error putting repository: %v", err)
	}

	ref := util.SHA160([]byte("random"))
	err = db.PutRef("myrepo", "refs/heads/master", ref)
	if err != nil {
		t.Errorf("error putting repository ref: %v", err)
	}
	err = db.PutRef("myrepo", "refs/heads/next", ref)
	if err != nil {
		t.Errorf("error putting repository ref: %v", err)
	}

	refs, err := db.ListRefs("myrepo")
	if err != nil {
		t.Errorf("error listing repository refs: %v", err)
	}

	assert.Equal(t, refs, []string{"refs/heads/master", "refs/heads/next"})
}
开发者ID:jeffslofish,项目名称:gitchain,代码行数:32,代码来源:repository_test.go


示例7: NewBlock

func NewBlock(previousBlockHash types.Hash, bits uint32, transactions []*trans.Envelope) (*Block, error) {
	encodedTransactions := make([][]byte, len(transactions))
	for i := range transactions {
		t, _ := transactions[i].Encode()
		encodedTransactions[i] = make([]byte, len(t))
		copy(encodedTransactions[i], t)
	}

	var merkleRootHash types.Hash
	var err error

	if len(encodedTransactions) > 0 {
		merkleRootHash, err = merkleRoot(encodedTransactions)
	} else {
		merkleRootHash = types.EmptyHash()
	}

	if err != nil {
		return nil, err
	}
	return &Block{
		Version:           BLOCK_VERSION,
		PreviousBlockHash: previousBlockHash,
		MerkleRootHash:    merkleRootHash,
		Timestamp:         time.Now().UTC().Unix(),
		Bits:              bits,
		Nonce:             0,
		Transactions:      transactions}, nil
}
开发者ID:linhua55,项目名称:gitchain,代码行数:29,代码来源:block.go


示例8: MiningFactory

func MiningFactory(srv *context.T) {
	log := srv.Log.New("cmp", "mining")
	var status MiningStatus
	n := 1 // TODO: in the future: srv.Config.Mining.Processes
	minedCh := make(chan *block.Block)
	for i := 0; i < n; i++ {
		ch := make(chan *block.Block)
		status.Miners = append(status.Miners, Miner{signallingChannel: ch})
		go block.Miner(ch, minedCh)
	}
	ch := srv.Router.Sub("/transaction")
	transactionsPool := make([]*transaction.Envelope, 0)
	var previousBlockHash types.Hash

	// Setup previous block hash
	if blk, _ := srv.DB.GetLastBlock(); blk == nil {
		previousBlockHash = types.EmptyHash()
	} else {
		previousBlockHash = blk.Hash()
	}

loop:
	select {
	case txni := <-ch:
		if txn, ok := txni.(*transaction.Envelope); ok {
			transactionsPool = append(transactionsPool, txn)
			stopMiners(status)
			mineBlock(status, srv, log, previousBlockHash, transactionsPool)
		}
	case blk := <-minedCh:
		if bytes.Compare(blk.PreviousBlockHash, previousBlockHash) == 0 {
			log.Debug("mined", "block", blk)
			for i := range blk.Transactions {
				for j := range transactionsPool {
					if bytes.Compare(transactionsPool[j].Hash(), blk.Transactions[i].Hash()) == 0 {
						transactionsPool = append(transactionsPool[0:j], transactionsPool[j+1:]...)
					}
				}
			}
			previousBlockHash = blk.Hash()
			stopMiners(status)
			err := srv.DB.PutBlock(blk, true)
			if err != nil {
				log.Error("error while serializing block", "block", blk.Hash(), "err", err)
			} else {
				srv.Router.Pub(blk, "/block", "/block/last")
				mineBlock(status, srv, log, previousBlockHash, transactionsPool)
			}
		}
	case reqi := <-miningFactoryRequests:
		if req, ok := reqi.(*MiningFactoryStatusRequest); ok {
			req.ResponseChannel <- status
		}
	case <-time.After(time.Second * 1):
		if key, _ := srv.DB.GetMainKey(); key != nil && len(transactionsPool) == 0 && status.AvailableMiners() == n {
			mineBlock(status, srv, log, previousBlockHash, make([]*transaction.Envelope, 0))
		}
	}
	goto loop
}
开发者ID:linhua55,项目名称:gitchain,代码行数:60,代码来源:miner.go


示例9: TestGetTransactionBlock

func TestGetTransactionBlock(t *testing.T) {
	transactions := fixtureSampleTransactions(t)

	block, err := block.NewBlock(types.EmptyHash(), block.HIGHEST_TARGET, transactions)
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}
	err = db.PutBlock(block, false)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}

	// Block<->transaction indexing
	for i := range transactions {
		block1, err := db.GetTransactionBlock(transactions[i].Hash())
		if err != nil {
			t.Errorf("error getting transaction's block: %v", err)
		}
		assert.Equal(t, block, block1)
	}
}
开发者ID:Jaspper,项目名称:gitchain,代码行数:28,代码来源:transaction_test.go


示例10: merkleRoot

func merkleRoot(data [][]byte) (types.Hash, error) {
	tree := merkle.NewTree()
	err := tree.Generate(data, fastsha256.New())
	if err != nil {
		return types.EmptyHash(), err
	}
	return tree.Root().Hash, err
}
开发者ID:linhua55,项目名称:gitchain,代码行数:8,代码来源:block.go


示例11: merkleRoot

func merkleRoot(data [][]byte) (types.Hash, error) {
	if len(data) == 1 { // FIXME: a workaround for trees with one element
		data = append(data, []byte{})
	}
	tree := merkle.NewTree()
	err := tree.Generate(data, fastsha256.New())
	if err != nil {
		return types.EmptyHash(), err
	}
	return types.NewHash(tree.Root().Hash), err
}
开发者ID:josephyzhou,项目名称:gitchain,代码行数:11,代码来源:block.go


示例12: TestPutGetBlock

func TestPutGetBlock(t *testing.T) {
	privateKey := generateECDSAKey(t)
	txn1, rand := transaction.NewNameReservation("my-new-repository", &privateKey.PublicKey)
	txn2, _ := transaction.NewNameAllocation("my-new-repository", rand, privateKey)
	txn3, _ := transaction.NewNameDeallocation("my-new-repository", privateKey)

	transactions := []transaction.T{txn1, txn2, txn3}
	block, err := block.NewBlock(types.EmptyHash(), block.HIGHEST_TARGET, transactions)
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}
	err = db.PutBlock(block, false)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}
	block1, err := db.GetBlock(block.Hash())
	if err != nil {
		t.Errorf("error getting block: %v", err)
	}
	if block1 == nil {
		t.Errorf("error getting block %v", block.Hash())
	}
	assert.Equal(t, block, block1)

	// Attempt fetching the last one
	block1, err = db.GetLastBlock()
	if err != nil {
		t.Errorf("error getting block: %v", err)
	}
	if block1 != nil {
		t.Errorf("error getting block, there should be no last block")
	}

	// Set the last one
	err = db.PutBlock(block, true)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}
	block1, err = db.GetLastBlock()
	if err != nil {
		t.Errorf("error getting last block: %v", err)
	}
	if block1 == nil {
		t.Errorf("error getting block, there should be a last block")
	}
	assert.Equal(t, block, block1)
}
开发者ID:Jaspper,项目名称:gitchain,代码行数:54,代码来源:db_test.go


示例13: GetNextTransactionHash

func (db *T) GetNextTransactionHash(hash []byte) (h types.Hash, e error) {
	readable(&e, db, func(dbtx *bolt.Tx) {
		bucket := dbtx.Bucket([]byte("blocks"))
		if bucket != nil {
			h = bucket.Get(append([]byte(">"), hash...))
			if h == nil {
				h = types.EmptyHash()
			}
		}
	})
	return
}
开发者ID:jeffslofish,项目名称:gitchain,代码行数:12,代码来源:transaction.go


示例14: TestGetNextTransactionHash

func TestGetNextTransactionHash(t *testing.T) {
	transactions, _ := fixtureSampleTransactions(t)

	block, err := block.NewBlock(types.EmptyHash(), block.HIGHEST_TARGET, transactions)
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}
	err = db.PutBlock(block, false)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}

	tx, err := db.GetNextTransactionHash(transactions[0].Hash())
	if err != nil {
		t.Errorf("error getting next transaction: %v", err)
	}
	assert.True(t, bytes.Compare(tx, transactions[1].Hash()) == 0)

	tx, err = db.GetNextTransactionHash(transactions[1].Hash())
	if err != nil {
		t.Errorf("error getting next transaction: %v", err)
	}
	assert.True(t, bytes.Compare(tx, transactions[2].Hash()) == 0)

	tx, err = db.GetNextTransactionHash(transactions[2].Hash())
	if err != nil {
		t.Errorf("error getting next transaction: %v", err)
	}
	assert.True(t, bytes.Compare(tx, types.EmptyHash()) == 0)

}
开发者ID:linhua55,项目名称:gitchain,代码行数:38,代码来源:transaction_test.go


示例15: TestNewBlock

func TestNewBlock(t *testing.T) {
	privateKey := generateKey(t)
	txn1, rand := trans.NewNameReservation("my-new-repository")
	txn1e := trans.NewEnvelope(types.EmptyHash(), txn1)
	txn2, _ := trans.NewNameAllocation("my-new-repository", rand)
	txn2e := trans.NewEnvelope(types.EmptyHash(), txn2)
	txn3, _ := trans.NewNameDeallocation("my-new-repository")
	txn3e := trans.NewEnvelope(types.EmptyHash(), txn3)

	txn1e.Sign(privateKey)
	txn2e.Sign(privateKey)
	txn3e.Sign(privateKey)

	transactions := []*trans.Envelope{txn1e, txn2e, txn3e}
	block1, err := NewBlock(types.EmptyHash(), HIGHEST_TARGET, transactions)

	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	assert.Equal(t, transactions, block1.Transactions)
	assert.NotEqual(t, block1.MerkleRootHash, types.EmptyHash())
}
开发者ID:linhua55,项目名称:gitchain,代码行数:23,代码来源:block_test.go


示例16: fixtureSampleTransactions

func fixtureSampleTransactions(t *testing.T) ([]*transaction.Envelope, *ecdsa.PrivateKey) {
	privateKey := generateECDSAKey(t)
	txn1, rand := transaction.NewNameReservation("my-new-repository")
	txn1e := transaction.NewEnvelope(types.EmptyHash(), txn1)
	txn1e.Sign(privateKey)
	txn2, _ := transaction.NewNameAllocation("my-new-repository", rand)
	txn2e := transaction.NewEnvelope(txn1e.Hash(), txn2)
	txn2e.Sign(privateKey)
	txn3, _ := transaction.NewNameDeallocation("my-new-repository")
	txn3e := transaction.NewEnvelope(txn2e.Hash(), txn3)
	txn3e.Sign(privateKey)

	return []*transaction.Envelope{txn1e, txn2e, txn3e}, privateKey
}
开发者ID:jeffslofish,项目名称:gitchain,代码行数:14,代码来源:db_test.go


示例17: TestPutGetBlock

func TestPutGetBlock(t *testing.T) {
	transactions, _ := fixtureSampleTransactions(t)

	blk, err := block.NewBlock(types.EmptyHash(), block.HIGHEST_TARGET, transactions)
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}
	err = db.PutBlock(blk, false)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}
	block1, err := db.GetBlock(blk.Hash())
	if err != nil {
		t.Errorf("error getting block: %v", err)
	}
	if block1 == nil {
		t.Errorf("error getting block %v", blk.Hash())
	}
	assert.Equal(t, blk, block1)

	// Attempt fetching the last one
	block1, err = db.GetLastBlock()
	if err != nil {
		t.Errorf("error getting block: %v", err)
	}
	if block1 != nil {
		t.Errorf("error getting block, there should be no last block")
	}

	// Set the last one
	err = db.PutBlock(blk, true)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}
	block1, err = db.GetLastBlock()
	if err != nil {
		t.Errorf("error getting last block: %v", err)
	}
	if block1 == nil {
		t.Errorf("error getting block, there should be a last block")
	}
	assert.Equal(t, blk, block1)
}
开发者ID:linhua55,项目名称:gitchain,代码行数:50,代码来源:block_test.go


示例18: TestEncodeDecodeEmptyBlock

func TestEncodeDecodeEmptyBlock(t *testing.T) {
	transactions := []*trans.Envelope{}
	block, err := NewBlock(types.EmptyHash(), HIGHEST_TARGET, transactions)
	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	enc, err := block.Encode()
	if err != nil {
		t.Errorf("error while encoding block: %v", err)
	}

	block1, err := Decode(enc)
	if err != nil {
		t.Errorf("error while encoding block: %v", err)
	}

	assert.Equal(t, block, block1, "encoded and decoded block should be identical to the original one")
}
开发者ID:linhua55,项目名称:gitchain,代码行数:19,代码来源:block_test.go


示例19: TestTransactionConfirmations

func TestTransactionConfirmations(t *testing.T) {
	db, err := NewDB("test.db")
	defer os.Remove("test.db")

	if err != nil {
		t.Errorf("error opening database: %v", err)
	}

	transactions := fixtureSampleTransactions(t)
	confirmationsTest := func(count int, note string) {
		for i := range transactions {
			confirmations, err := db.GetTransactionConfirmations(transactions[i].Hash())
			if err != nil {
				t.Errorf("error getting transaction's confirmations: %v", err)
			}
			assert.Equal(t, confirmations, count, note)
		}
	}

	blk, err := block.NewBlock(types.EmptyHash(), block.HIGHEST_TARGET, transactions)

	if err != nil {
		t.Errorf("can't create a block because of %v", err)
	}

	confirmationsTest(0, "no transaction was confirmed yet")

	err = db.PutBlock(blk, true)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}

	confirmationsTest(1, "there should be one confirmation")

	anotherSampleOfTransactions := fixtureSampleTransactions(t)

	blk, err = block.NewBlock(blk.Hash(), block.HIGHEST_TARGET, anotherSampleOfTransactions)
	err = db.PutBlock(blk, true)
	if err != nil {
		t.Errorf("error putting block: %v", err)
	}

}
开发者ID:Jaspper,项目名称:gitchain,代码行数:43,代码来源:transaction_test.go


示例20: TestEnvelopeSignVerify

func TestEnvelopeSignVerify(t *testing.T) {
	privateKey := generateKey(t)
	txn, _ := NewNameReservation("my-new-repository")

	e := NewEnvelope(types.EmptyHash(), txn)

	err := e.Sign(privateKey)
	if err != nil {
		t.Errorf("Can't sign the envelope: %v", err)
	}

	v, err := e.Verify()

	if err != nil {
		t.Errorf("Can't verify the envelope: %v", err)
	}

	assert.True(t, v)

}
开发者ID:jeffslofish,项目名称:gitchain,代码行数:20,代码来源:envelope_test.go



注:本文中的github.com/gitchain/gitchain/types.EmptyHash函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang config.NewFrom函数代码示例发布时间:2022-05-23
下一篇:
Golang manager.DBPath类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap