It seems there are some variants of GD32VF103CBT6.
dfu-util --list output of bare chip available in the market.
Found DFU: [28e9:0189] ver=0100, devnum=15, cfg=1, intf=0, path="1-4", alt=0, name="@Internal Flash /0x08000000/128*001Kg", serial="3CBJ"
dfu-util --list output of Longan Nano.
Found DFU: [28e9:0189] ver=1000, devnum=16, cfg=1, intf=0, path="1-4", alt=1, name="@Option Bytes /0x1FFFF800/01*016 g", serial="3CBJ"
Found DFU: [28e9:0189] ver=1000, devnum=16, cfg=1, intf=0, path="1-4", alt=0, name="@Internal Flash /0x08000000/512*002Kg", serial="3CBJ"
While Longan Nano can be erased with mass-erase command, bare chip always reports failure.
If the bare chip is blank it can be programmed successfully. But if it is not blank it fails to program silently. Reporting success but read-out not matching.
If you erase the chip through JTAG with openocd, it can be programmed again.
Any information is welcome.